Плохо! Плохо!:  0
Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 30

Тема: Жирный Шрифт!

  1. #1

    Счастье Жирный Шрифт!

    Здравствуйте люди! Я уже давно изучаю Мэйкер, и вот меня заинтересовал RPG Maker XP! Только проблема в том, что я не понимаю, как работать с РГСС. Подскажите, как с помощью скриптов можно заменить в игре шрифт на какой-нибудь ARIAL, причём очень важно, чтобы текст в игре был жирным, как на приставочных играх... Типа вот такого -



    Причём надо так же чтобы текст был с тенюшками... А то я заметил, что на мэйкере ХР этих тенюшек не наблюдается... А надо, чтобы наблюдалось! Может скрипт есть какой? Подскажите!

  2. #2
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Тебе нужно только в сообщениях, или во всех окнах? А вообще есть много скриптов типа http://rpgmaker.su/showthread.php/220-UMS. И вообще, зачем создавать новую тему, когда есть специальные темы помощи.

    Ссылка там здохла, поэтому вот:

    PHP код:
    # *****************************************************************************
    # *    Universal Message System
    # *    Универсальная Система Сообщений
    # *      v1.8.0
    # *      автор скрипта Ccoa
    # *      переводчик mephis
    # *
    # *   (Примечание от автора)
    # *    Если вы увидите данный скрипт где-то, кроме сайтов RPG Revolution,
    # *    RMVXP Universe, SponGen или RPG Manager, свяжитесь, пожалуйста, со мной.
    # *    Я не давала разрешение на распространение данного скрипта в других местах.
    # *
    # *   (Примечание от переводчика)
    # *    Прости, дорогая Ccoa, мы, в России, не хотели тебя обидеть, незаконно
    # *    распространяя и используя твой скрипт. Так уж вышло, что нам он очень
    # *    понравился и мы его, гхм, "подобрали" :)
    # *****************************************************************************
    # Использование:
    =begin

    КОДЫ В СООБЩЕНИЯХ
      
    \b          - вкл./выкл. вывод полужирного текста
      
    \bopc[i]    - устанавливает прозрачность фона в значение i (диапазон 0-255)
      \
    c[i]       - меняет цвет текста
      
    \c[#IIIIII] - меняет цвет текста в шестнадцатиричной записи (временно)
      
    \e[i]       - размещает текстовое окно над событием i (0 = игрок, -1 ни над каким событием)
      \
    face[name] - меняет картинку лица на name.png (оставьте пустые скобки [], если картинки лица не будет)
      \
    fl         - располагает картинку лица слева
      
    \font[name] - меняет шрифт на name, оставьте пустые скобки [], чтобы вернуться к шрифту по умолчанию
      
    \fr         - располагает картинку лица справа
      
    \g          - показывает окошко с количеством денег
      
    \height[i]  - устанавливает высоту текстового окна в i пикселей. Работает только в нормальном режиме
      
    \i          - вкл./выкл. выделение курсивом
      
    \ic[name]   - показывает иконку с именем name в тексте сообщения
      
    \ignr       - в текущей строке ничего не выводится, а только обрабатываются коды сообщений. Ставится в самом начале строки 
      
    \jc         - выравнивает окно по центру, игнорируется при использовании кода \e
      
    \jl         - выравнивает окно по левой стороне, игнорируется при использовании кода \e
      
    \jr         - выравнивает окно по правой стороне, игнорируется при использовании кода \e
      
    \m          - переключение между нормальным и FIT-режимом
      
    \n[i]       - отобразить имя i-го героя
      
    \nm[name]   - показать имя в отдельном окошке; оставьте пустые скобки [], чтобы отключить это окошко
      
    \oa[i]      - показать иконку и название i-ой брони
      
    \oi[i]      - показать иконку и название i-ой вещи
      
    \opc[i]     - установить прозрачность текущего сообщение в i (в пределах 0-255)
      \
    os[i]      - показать иконку и название i-го навыка
      
    \ow[i]      - показать иконку и название i-го оружия
      
    \p[i]       - пауза i кадров перед выводом следующего символа
      
    \pt         - вкл./выкл. иконки паузы
      
    \s          - вкл./выкл. тени от текста
      
    \shk[i]     - установить тряску окна в i; чем больше i, тем больше тряска; 0 - тряска отсутствует
      
    \sk[i]      - начало трясущегося текста; чем больше i, тем больше тряска
      
    \sk         - конец трясущегося текста
      
    \skip       - вкл./выкл. пропуска текста
      
    \ta[i]      - центрирование окна над i-м героем в цепочке. Для этого нужен скрипт ccoa's Caterpillar
      \t1         - показать комиксную иконку talk1
      \t2         - показать комиксную иконку talk2
      \tc         - центрирование текста; ставится в начале строки
      \th         - показать комиксную иконку thought
      \tl         - выравнивание текста по левой стороне; ставится в начале строки
      \tr         - выравнивание текста по правой стороне; ставится в начале строки
      \v[i]       - показать значение i-ой переменной
      \width      - устанавливает ширину текстового окна в i пикселей. Работает только в нормальном режиме
      \w[i]       - подождать i кадров после выполнения этого кода, а затем закрыть окно
      \ws[i]      - установить время задержки вывода символов в i; чем меньше значение, тем больше скорость
      \slv[name]  - сделать это окно подчинённым или показать имя подчинённого окна
      \inc        - присоединить это окно к предыдущему
      
    ВНЕ СООБЩЕНИЙ (используются черзе команду Script/Выполнить скрипт)
    $game_system.ums_mode = NORMAL_MODE - переключение в нормальный режим
    $game_system.ums_mode = FIT_WINDOW_TO_TEXT - переключение в FIT-режим
    $game_system.text_skip = true - включить пропуск текста
    $game_system.text_skip = false
    true                           - выключить вывод текста (строка true обязательна)
    $game_system.text_mode = WRITE_FASTER - переключить режим пропуска текста в ускоренный вывод
    $game_system.text_mode = WRITE_ALL - переключить режим пропуска текста в мгновенный вывод
    $game_system.write_speed = i - установить задержку между выводом букв в i кадров
    $game_system.window_height = i - установить высоту окна в i пикселей
    $game_system.window_width = i - установить ширину окна в i пикселей
    $game_system.window_justification = RIGHT - выровнять окно по правой стороне
    $game_system.window_justification = LEFT - выровнять окно по левой стороне
    $game_system.window_justification = CENTER - отцентрировать окно
    $game_system.face_graphic = "filename" - установить картинку лица из файла filename.png
    $game_system.face_graphic = "" - убрать картинку лица
    $game_system.face_graphic_justification = LEFT - разместить картинку лица слева
    $game_system.face_graphic_justification = RIGHT - разместить картинку лица справа
    $game_system.face_graphic_position = TOP - разместить картинку лица над окном
    $game_system.face_graphic_position = CENTER - разместить картинку лица в центре
    $game_system.face_graphic_position = BOTTOM - разместить картинку лица внизу окна
    $game_system.shadow_text = true - включить оттенение текста
    $game_system.shadow_text = false
    true                            - выключить оттенение текста (строка true обязательна)
    $game_system.shadow_color = Color.new(красный, синий, зелёный, яркость) - изменить цвет тени текста
    $game_system.message_event = определяет над каким событием будет сообщение (0 = игрок, -1 = нет события)
    $game_system.comic_enabled = false 
    true                               - выключение комиксного стиля
    $game_system.comic_enabled = true  - включение комиксного стиля (работает если message_event не равно -1)
    $game_system.comic_style = TALK1   - использование talk1.png в комиксном стиле
    $game_system.comic_style = TALK2   - использование talk2.png в комиксном стиле
    $game_system.comic_style = THOUGHT - использование thought.png в комиксном стиле
    $game_system.name = "name" - установить текст окна имени в name
    $game_system.name = "" - убрать окно имени
    $game_system.font = "name" - изменить использующийся шрифт на шрифт с названием name
    $game_system.font = "" - вернуть шрифт по умолчанию
    $game_system.text_justification = CENTER - центрирование текста
    $game_system.text_justification = LEFT - выравнивание текста по левому краю
    $game_system.text_justification = RIGHT - выравнивание текста по правому краю
    $game_system.show_pause = true - показать иконку паузы во время ожидания действия игрока
    $game_system.show_pause = false - не показывать иконку паузы во время ожидания действия игрока
    $game_system.shake = 0 - выключить тряску сообщения
    $game_system.shake = i - установить тряску сообщения в i; чем больше i, тем больше тряска
    $game_system.sound_effect = "" - выключить озвучивание побуквенного вывода
    $game_system.sound_effect = "sename" - проигрывать звуковой эффект sename после вывода каждой буквы
    $game_system.animated_faces = false - не использовать анимированные лица
    $game_system.animated_faces = true - использовать анимированные лица
    $game_system.animation_pause = i - ждать i кадров после каждого кадра анимации
    $game_system.face_frame_width = i - установить размер картинок лиц в i пикселей
    $game_system.resting_face = "" - Не использовать анимацию лица при ожидании ввода
    $game_system.resting_face = "name" - Использовать другую анимацию лица при ожидании ввода
    $game_system.resting_animation_pause = i - Ждать i кадров после каждого кадра анимации ожидания ввода
    $game_system.text_mode = ONE_LETTER_AT_A_TIME - установить побуквенный вывод текста
    $game_system.text_mode = ALL_AT_ONCE - выводить текст одним махом
    $game_system.font_color = Color.new(R, G, B, A) - навсегда устанавливает цвет текста в соответствии с указанным значением RGBA
    $game_system.font_color = nil - возвращает постоянный цвет текста в значение normal_color (белый, по умолчанию)
    $game_system.windowskin = "windowskinname" - меняет скин окна сообщений в windowskin
    $game_system.windowskin = "" - возвращает скин окна по умолчанию
    $game_system.name_window = true - показывать окно имени
    $game_system.name_window = false - спрятать окно имени (показывается только текст)
    $game_system.opacity = i - установить фон окна сообщения в i (в пределах 0-255)
    $game_system.window_image = "imagename" - имя картинки, которая будет выводиться на фоне окна
    $game_system.window_image = nil - не показывать картинку на фоне окна
    $game_system.train_actor = i - центрирование окна над i-м героем в цепочке

    =end
    # *****************************************************************************
    #  КОНСТАНТЫ
    # *****************************************************************************

    # оконные режимы
    NORMAL_MODE        = 0
    FIT_WINDOW_TO_TEXT = 1

    # режимы вывода текста
    ONE_LETTER_AT_A_TIME = 0
    ALL_AT_ONCE          = 1

    # режимы пропуска текста
    WRITE_FASTER = 0
    WRITE_ALL    = 1

    # выравнивания
    RIGHT  = 4
    CENTER = 1
    LEFT   = 6

    # позиции других объектов (графика лица, окно выбора и т.д.)
    ABOVE  = 0  # помещает объект выше окна сообщения
    CENTER = 1  # центрирует объект вертикально по центру внутри окна сообщения
    BOTTOM = 2  # размещает объект так, что его нижняя часть совпадает с низом окна
    SIDE   = 3  # сбоку окна сообщения (сторона определяется выравниванием)

    # типы комиксных сообщений
    TALK1   = 0
    TALK2   = 1
    THOUGHT = 2

    # -----
    # Дальше пошёл код скрипта, обычным пользователям читать его смысла нет
    # Разве что можно посмотреть настройки по умолчанию начиная со строки 234
    # -----

    # *****************************************************************************
    #  Changes to Game_System.  This allows any changes made to be saved when the
    #     game is saved.
    # *****************************************************************************

    class Game_System
      attr_accessor :ums_mode # what mode the UMS is in
      attr_accessor :text_skip # whether or not text skip is activated
      attr_accessor :skip_mode # write the text faster while C is pressed, or just skip to the end
      attr_accessor :write_speed # frame delay between characters
      
      attr_accessor :text_mode # write one letter at a time, or all at once?
      
      attr_accessor :window_height # default height of message window
      attr_accessor :window_width # default width of message window
      attr_accessor :window_justification # default justification of window
      
      attr_accessor :face_graphic # current face graphic
      attr_accessor :face_graphic_justification # justification of face graphic
      attr_accessor :face_graphic_position # position of face graphic
      
      attr_accessor :shadowed_text # whether or not to draw a shadow behind the text
      attr_accessor :shadow_color # the shadow color
      
      attr_accessor :choice_justification # where the choice window is located
      attr_accessor :choice_position # prefered position of choice window
      
      attr_accessor :message_event # what event to center the text over (0 player, -1 to not)
      attr_accessor :train_actor   # what train actor to center the text over (0 player, -1 to not)
      
      attr_accessor :comic_enabled # using "talk" icons?
      attr_accessor :comic_style   # what type of comic image to use
      
      attr_accessor :name # the text for the name window
      attr_accessor :name_window # should the name window be visible?
      
      attr_accessor :font # the name of the font
      attr_accessor :font_color # the name of the (permanent) font color
      
      attr_accessor :text_justification # the justification of the window text
      
      attr_accessor :show_pause # whether or not to show the pause icon
      
      attr_accessor :shake # the amount of shake for the window
      attr_accessor :text_shake # shake amount for text
      
      attr_accessor :sound_effect # SE to play with each letter
      
      attr_accessor :slave_windows # hash of slave windows
      attr_accessor :indy_windows  # hash of independent windows
      
      attr_accessor :animated_faces # are the faces animated?
      attr_accessor :animation_pause # how long do I wait between animation loops?
      attr_accessor :face_frame_width # how many pixels wide is each face frame
      attr_accessor :resting_face  # postext for waiting face graphic
      attr_accessor :resting_animation_pause # how long to wait for resting graphic
      
      attr_accessor :windowskin # what windowskin to use for messages
      attr_accessor :back_opacity # back opacity of windowskin
      attr_accessor :opacity # opacity of windowskin
      
      attr_accessor :window_image # image used behind window
      
      attr_reader :shortcuts  # user-defined shortcuts
      
      # Настройки по умолчанию
      alias ums_initialize initialize
      def initialize
        ums_initialize
        @ums_mode = NORMAL_MODE
        
        @skip_mode = WRITE_ALL
        @text_skip = true
        @write_speed = 2
        
        @text_mode = ONE_LETTER_AT_A_TIME
        
        @window_height = 128
        @window_width = 480
        @window_justification = CENTER
        
        @face_graphic = ""
        @face_graphic_justification = LEFT
        @face_graphic_position = CENTER
        
        @shadowed_text = false
        @shadow_color = Color.new(0, 0, 0, 100)
        
        @choice_justification = RIGHT
        @choice_position = SIDE
        
        @message_event = -1
        @train_actor   = -1
        
        @comic_enabled = false
        @comic_style = TALK1
        
        @name = ""
        @name_window = true
        
        @font = "Verdana"
        @font_color = nil
        
        @text_justification = LEFT
        
        @show_pause = true
        
        @shake = 0
        @text_shake = 0
        
        @sound_effect = ""
        
        @slave_windows = {}
        @indy_windows  = {}
        
        @animated_faces = false
        @animation_pause = 80
        @face_frame_width = 100
        @resting_face = ""
        @resting_animation_pause = 80
        
        @windowskin = ""
        @opacity = 255
        @back_opacity = 160
        
        @window_image = nil
        
        @used_codes = ['
    \v', '\n', '\c', '\g', '\skip', '\m', '\height', '\width', 
                       '
    \jr', '\jc', '\jl', '\face', '\fl', '\fr', '\b', '\i', '\s',
                       '
    \e', '\t1', '\t2', '\th', '\nm', '\font', '\p', '\w', '\ws',
                       '
    \oa', '\oi', '\os', '\ow', '\tl', '\tr', '\tc', '\ignr', 
                       '
    \shk', '\slv', '\ind', '\inc']
                       
        @shortcuts = {}
      end
      
      def add_shortcut(shortcut, code)
        text = shortcut.downcase
        if !@used_codes.include?(text)
          @shortcuts[shortcut] = code
        end
      end
      
      def open_window(name)
        if $game_system.indy_windows.has_key?(name)
          $game_system.indy_windows[name].show = true
        end
      end
      
      def close_window(name)
        if $game_system.indy_windows.has_key?(name)
          $game_system.indy_windows[name].dispose
          $game_system.indy_windows.delete(name)
        end
      end
    end

    #==============================================================================
    # ** Game_Temp
    #------------------------------------------------------------------------------
    #  This class handles temporary data that is not included with save data.
    #  Refer to "$game_temp" for the instance of this class.
    #==============================================================================
    class Game_Temp
      attr_accessor :choices
      attr_accessor :num_choices
      attr_accessor :skip_next_choices
      
      alias old_init initialize
      def initialize
        old_init
        @skip_next_choices = 0
        @num_choices = 1
      end
    end

    class Scene_Map
      alias ums_update update
      def update
        $game_system.slave_windows.each_value { |window| window.update }
        $game_system.indy_windows.each_value { |window| window.update }
        ums_update
      end
    end

    class Interpreter
      #--------------------------------------------------------------------------
      # * Выполнение команд события
      #--------------------------------------------------------------------------
      def execute_command
        # If last to arrive for list of event commands
        if @index >= @list.size - 1
          # End event
          command_end
          # Continue
          return true
        end
        # Make event command parameters available for reference via @parameters
        if !(@list[@index].code == 102 and $game_temp.skip_next_choices > 0) 
          @parameters = @list[@index].parameters.clone
          if @list[@index].code == 402
            @parameters[0] += @offset
          end
        end
        # Branch by command code
        case @list[@index].code
        when 101  # Show Text
          return command_101
        when 102  # Show Choices
          return command_102
        when 402  # When [**]
          return command_402
        when 403  # When Cancel
          return command_403
        when 103  # Input Number
          return command_103
        when 104  # Change Text Options
          return command_104
        when 105  # Button Input Processing
          return command_105
        when 106  # Wait
          return command_106
        when 111  # Conditional Branch
          return command_111
        when 411  # Else
          return command_411
        when 112  # Loop
          return command_112
        when 413  # Repeat Above
          return command_413
        when 113  # Break Loop
          return command_113
        when 115  # Exit Event Processing
          return command_115
        when 116  # Erase Event
          return command_116
        when 117  # Call Common Event
          return command_117
        when 118  # Label
          return command_118
        when 119  # Jump to Label
          return command_119
        when 121  # Control Switches
          return command_121
        when 122  # Control Variables
          return command_122
        when 123  # Control Self Switch
          return command_123
        when 124  # Control Timer
          return command_124
        when 125  # Change Gold
          return command_125
        when 126  # Change Items
          return command_126
        when 127  # Change Weapons
          return command_127
        when 128  # Change Armor
          return command_128
        when 129  # Change Party Member
          return command_129
        when 131  # Change Windowskin
          return command_131
        when 132  # Change Battle BGM
          return command_132
        when 133  # Change Battle End ME
          return command_133
        when 134  # Change Save Access
          return command_134
        when 135  # Change Menu Access
          return command_135
        when 136  # Change Encounter
          return command_136
        when 201  # Transfer Player
          return command_201
        when 202  # Set Event Location
          return command_202
        when 203  # Scroll Map
          return command_203
        when 204  # Change Map Settings
          return command_204
        when 205  # Change Fog Color Tone
          return command_205
        when 206  # Change Fog Opacity
          return command_206
        when 207  # Show Animation
          return command_207
        when 208  # Change Transparent Flag
          return command_208
        when 209  # Set Move Route
          return command_209
        when 210  # Wait for Move'
    s Completion
          
    return command_210
        when 221  
    # Prepare for Transition
          
    return command_221
        when 222  
    # Execute Transition
          
    return command_222
        when 223  
    # Change Screen Color Tone
          
    return command_223
        when 224  
    # Screen Flash
          
    return command_224
        when 225  
    # Screen Shake
          
    return command_225
        when 231  
    # Show Picture
          
    return command_231
        when 232  
    # Move Picture
          
    return command_232
        when 233  
    # Rotate Picture
          
    return command_233
        when 234  
    # Change Picture Color Tone
          
    return command_234
        when 235  
    # Erase Picture
          
    return command_235
        when 236  
    # Set Weather Effects
          
    return command_236
        when 241  
    # Play BGM
          
    return command_241
        when 242  
    # Fade Out BGM
          
    return command_242
        when 245  
    # Play BGS
          
    return command_245
        when 246  
    # Fade Out BGS
          
    return command_246
        when 247  
    # Memorize BGM/BGS
          
    return command_247
        when 248  
    # Restore BGM/BGS
          
    return command_248
        when 249  
    # Play ME
          
    return command_249
        when 250  
    # Play SE
          
    return command_250
        when 251  
    # Stop SE
          
    return command_251
        when 301  
    # Battle Processing
          
    return command_301
        when 601  
    # If Win
          
    return command_601
        when 602  
    # If Escape
          
    return command_602
        when 603  
    # If Lose
          
    return command_603
        when 302  
    # Shop Processing
          
    return command_302
        when 303  
    # Name Input Processing
          
    return command_303
        when 311  
    # Change HP
          
    return command_311
        when 312  
    # Change SP
          
    return command_312
        when 313  
    # Change State
          
    return command_313
        when 314  
    # Recover All
          
    return command_314
        when 315  
    # Change EXP
          
    return command_315
        when 316  
    # Change Level
          
    return command_316
        when 317  
    # Change Parameters
          
    return command_317
        when 318  
    # Change Skills
          
    return command_318
        when 319  
    # Change Equipment
          
    return command_319
        when 320  
    # Change Actor Name
          
    return command_320
        when 321  
    # Change Actor Class
          
    return command_321
        when 322  
    # Change Actor Graphic
          
    return command_322
        when 331  
    # Change Enemy HP
          
    return command_331
        when 332  
    # Change Enemy SP
          
    return command_332
        when 333  
    # Change Enemy State
          
    return command_333
        when 334  
    # Enemy Recover All
          
    return command_334
        when 335  
    # Enemy Appearance
          
    return command_335
        when 336  
    # Enemy Transform
          
    return command_336
        when 337  
    # Show Battle Animation
          
    return command_337
        when 338  
    # Deal Damage
          
    return command_338
        when 339  
    # Force Action
          
    return command_339
        when 340  
    # Abort Battle
          
    return command_340
        when 351  
    # Call Menu Screen
          
    return command_351
        when 352  
    # Call Save Screen
          
    return command_352
        when 353  
    # Game Over
          
    return command_353
        when 354  
    # Return to Title Screen
          
    return command_354
        when 355  
    # Script
          
    return command_355
        
    else      # Other
          
    return true
        end
      end
      
      
    #--------------------------------------------------------------------------
      # * Show Text
      #--------------------------------------------------------------------------
      
    def command_101
        
    # If other text has been set to message_text
        
    if $game_temp.message_text != nil
          
    # End
          
    return false
        end
        
    # Set message end waiting flag and callback
        
    @message_waiting = true
        $game_temp
    .message_proc = Proc.new { @message_waiting = false }
        
    # Set message text on first line
        
    $game_temp.message_text = @list[@index].parameters[0] + "\n"
        
    line_count = 1
        
    # Loop
        
    loop do
          
    # If next event command text is on the second line or after
          
    if @list[@index + 1].code == 401
            
    # Add the second line or after to message_text
            
    $game_temp.message_text += @list[@index + 1].parameters[0] + "\n"
            
    line_count += 1
          
    # If the next event command is show text
          
    elsif @list[@index + 1].code == 101
            
    # If the text contains the \inc code
            
    if @list[@index + 1].parameters[0].index(/\\[Ii][Nn][Cc]/) != nil
              $game_temp
    .message_text += @list[@index + 1].parameters[0] + "\n"
              
    $game_temp.message_text.sub!(/\\[Ii][Nn][Cc]/) { "" }
            else
              return 
    true
            end
          
    # If event command is not on the second line or after
          
    else
            
    # If next event command is show choices
            
    if @list[@index + 1].code == 102
              
    # Advance index
              
    @index += 1
              
              
    # skip this one, it was already shown?
              
    if $game_temp.skip_next_choices > 0
                $game_temp
    .skip_next_choices -= 1
              
    else
                
    # Choices setup
                
    $game_temp.choice_start = line_count
                setup_choices
    (@list[@index].parameters)
              
    end
            
    # If next event command is input number
            
    elsif @list[@index + 1].code == 103
              
    # If number input window fits on screen
              
    if line_count < 4
                
    # Advance index
                
    @index += 1
                
    # Number input setup
                
    $game_temp.num_input_start = line_count
                $game_temp
    .num_input_variable_id = @list[@index].parameters[0]
                
    $game_temp.num_input_digits_max = @list[@index].parameters[1]
              
    end
            end
            
    # Continue
            
    return true
          end
          
    # Advance index
          
    @index += 1
        end
      end
      
    #--------------------------------------------------------------------------
      # * Show Choices
      #--------------------------------------------------------------------------
      
    def command_102
        
    # If text has been set to message_text
        
    if $game_temp.message_text != nil
          
    # End
          
    return false
        end
        
        
    if $game_temp.skip_next_choices > 0
          
    # skip this one, it is part of another
          
    $game_temp.skip_next_choices -= 1
          
    @offset += 4
          
    @index += 1
          
    return false
        
    else
          @
    offset = 0
        end
        
    # Set message end waiting flag and callback
        
    @message_waiting = true
        $game_temp
    .message_proc = Proc.new { @message_waiting = false }
        
    # Choices setup
        
    $game_temp.message_text = ""
        
    $game_temp.choice_start = 0
        setup_choices
    (@parameters)
        
    # Continue
        
    return true
      end
      
    #--------------------------------------------------------------------------
      # * Setup Choices
      #--------------------------------------------------------------------------
      
    def setup_choices(parameters)
        
    params = parameters.clone
        @
    offset = 0
        i 
    = @index
        curr 
    = 1
        
    while curr < $game_temp.num_choices
          i 
    += 1
          
    if @list[i].code == 102
            params
    [0] += @list[i].parameters[0]
            if @list[
    i].parameters[1] == 5
              
    @cancel_flag = true
            
    else
              @
    cancel_flag = false
            end
            params
    [1] = @list[i].parameters[1] + (curr * 4)
            
    curr += 1
          end
        end
        
        
    # Set choice item count to choice_max
        
    $game_temp.choice_max = params[0].size
        
    # Set choice to message_text
        
    $game_temp.choices = params[0]
        
    # Set cancel processing
        
    $game_temp.choice_cancel_type = params[1]
        
        if 
    $game_temp.num_choices != 1
          $game_temp
    .skip_next_choices = $game_temp.num_choices - 1
          $game_temp
    .num_choices = 1
        end
        
        
    # Set callback
        
    current_indent = @list[@index].indent
        $game_temp
    .choice_proc = Proc.new { |n| @branch[current_indent] = n }
      
    end
      
      
    #--------------------------------------------------------------------------
      # * When [**]
      #--------------------------------------------------------------------------
      
    def command_402
        
    # If fitting choices are selected
        
    if @branch[@list[@index].indent] == @parameters[0]
          
    # Delete branch data
          
    @branch.delete(@list[@index].indent)
          
    # Continue
          
    return true
        end
        
    # If it doesn't meet the condition: command skip
        
    return command_skip
      end
      
      
    #--------------------------------------------------------------------------
      # * When Cancel
      #--------------------------------------------------------------------------
      
    def command_403
        
    # If choices are cancelled
        
    if @cancel_flag
          
    # Delete branch data
          
    @branch.delete(@list[@index].indent)
          
    # Continue
          
    return true
        end
        
    # If it doen't meet the condition: command skip
        
    return command_skip
      end
      
      
    #--------------------------------------------------------------------------
      # * Input Number
      #--------------------------------------------------------------------------
      
    def command_103
        
    # If text has been set to message_text
        
    if $game_temp.message_text != nil
          
    # End
          
    return false
        end
        
    # Set message end waiting flag and callback
        
    @message_waiting = true
        $game_temp
    .message_proc = Proc.new { @message_waiting = false }
        
    # Number input setup
        
    $game_temp.message_text = ""
        
    $game_temp.num_input_start = 0
        $game_temp
    .num_input_variable_id = @parameters[0]
        
    $game_temp.num_input_digits_max = @parameters[1]
        
    # Continue
        
    return true
      end
      
      
    #--------------------------------------------------------------------------
      # * Script
      #--------------------------------------------------------------------------
      
    def command_355
        
    # Set first line to script
        
    script = @list[@index].parameters[0] + "\n"
        
    # Loop
        
    loop do
          
    # If next event command is second line of script or after
          
    if @list[@index + 1].code == 655
            
    # Add second line or after to script
            
    script += @list[@index + 1].parameters[0] + "\n"
          
    # If event command is not second line or after
          
    else
            
    # Abort loop
            
    break
          
    end
          
    # Advance index
          
    @index += 1
        end
        
    # Evaluation
        
    result = eval(script)

        
    # Continue
        
    return true
      end
    end

    # *****************************************************************************
    #  Changes to Window_Message.  This is the bulk of the script
    # *****************************************************************************
    #==============================================================================
    # ** Window_Message
    #------------------------------------------------------------------------------
    #  This message window is used to display text.
    #==============================================================================

    class Window_Message < Window_Selectable
      
    #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      
    def initialize
        
    # x-coordinate depends on justification
        
    if $game_system.window_justification == RIGHT
          x 
    = 640 - self.width
        elsif $game_system
    .window_justification == LEFT
          x 
    = 0
        
    else # center
          
    x = (640 - $game_system.window_width) / 2
        end
        
    # y-coordinate depends on height
        
    y = 480 - $game_system.window_height - 16
        super
    (x, y, $game_system.window_width, $game_system.window_height)
        
    self.contents = Bitmap.new(width - 32, height - 32)
        if 
    $game_system.font == ""
          
    self.contents.font.name = Font.default_name
        
    else
          
    self.contents.font.name = $game_system.font
        end
        self
    .visible = false
        self
    .z = 9998
        
    @fade_in = false
        
    @fade_out = false
        
    @contents_showing = false
        
        
    # face graphic sprite
        
    @face = Sprite.new
        @
    face.opacity = 0
        
    @face.z = self.z + 1
        
    @face_offset = 0
        
        
    # choice window
        
    @choice_window = Window_Choice.new([]) 
        @
    choice_window.back_opacity = $game_system.back_opacity
        
        
    # comic sprite
        
    @comic = Sprite.new
        @
    comic.opacity = 0
        
    @comic.z = self.z + 1
        
    if $game_system.comic_style == TALK1
          
    @comic.bitmap = RPG::Cache.windowskin("talk1")
        
    elsif $game_system.comic_style == TALK2
          
    @comic.bitmap = RPG::Cache.windowskin("talk2")
        else 
    # thought
          
    @comic.bitmap = RPG::Cache.windowskin("thought")
        
    end
        
        
    # window image sprite
        
    @window_back = Sprite.new
        @
    window_back.opacity = 0
        
    @window_back.z = self.z - 1
        
    if $game_system.window_image != nil
          
    @window_back.bitmap = RPG::Cache.windowskin($game_system.window_image)
        
    end
        
        
    # name window
        
    @name_window = Window_Name.new
        @
    name_window.z = self.z + 1
        
        
    # shake bitmaps
        
    @shake_sprite = Sprite.new
        @
    shake_sprite.bitmap = Bitmap.new(width - 32, height - 32)
        @
    shake_sprite.x = self.x + 16
        
    @shake_sprite.y = self.y + 8
        
    @shake_sprite.z = self.z + 1
        
        
    @pause_time = 0
        
    @wait = 0
        
        
    @show = false
        
        
    @face_frame = 0
      end
      
    #--------------------------------------------------------------------------
      # * Dispose
      #--------------------------------------------------------------------------
      
    def dispose
        terminate_message
        $game_temp
    .message_window_showing = false
        
    if @input_number_window != nil
          
    @input_number_window.dispose
        end
        
    @face.dispose
        
    @choice_window.dispose
        
    @comic.dispose
        
    @name_window.dispose
        
    @shake_sprite.dispose
        super
      end
      
    #--------------------------------------------------------------------------
      # * Terminate Message
      #--------------------------------------------------------------------------
      
    def terminate_message
        
    @show = false
        self
    .active = false
        self
    .pause = false
        self
    .contents.clear
        
    # Clear showing flag
        
    @contents_showing = false
        
    # Call message callback
        
    if $game_temp.message_proc != nil
          $game_temp
    .message_proc.call
        end
        
    # Clear variables related to text, choices, and number input
        
    $game_temp.message_text = nil
        $game_temp
    .message_proc = nil
        $game_temp
    .choice_start = 99
        $game_temp
    .choice_max = 0
        $game_temp
    .choice_cancel_type = 0
        $game_temp
    .choice_proc = nil
        $game_temp
    .num_input_start = 99
        $game_temp
    .num_input_variable_id = 0
        $game_temp
    .num_input_digits_max = 0
        
    # Open gold window
        
    if @gold_window != nil
          
    @gold_window.dispose
          
    @gold_window = nil
        end
        
    @choice_window.visible = false
        
    @choice_window.active = false
        
    @comic.opacity = 0
        $game_system
    .slave_windows.each_pair {|name, window| 
          if 
    window.show == true
            window
    .dispose
            $game_system
    .slave_windows.delete(name)
          
    end
        
    }
        @
    done = false
      end
      
    #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      
    def refresh
        self
    .contents.clear
        
    if $game_system.font_color.nil?
          
    self.contents.font.color = normal_color
        
    else
          
    self.contents.font.color = $game_system.font_color
        end
        
    if $game_system.windowskin != ""  
          
    self.windowskin = RPG::Cache.windowskin($game_system.windowskin)
        else
          
    self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)
        
    end
        
    if $game_system.comic_style == TALK1
          
    @comic.bitmap = RPG::Cache.windowskin("talk1")
        
    elsif $game_system.comic_style == TALK2
          
    @comic.bitmap = RPG::Cache.windowskin("talk2")
        else 
    # thought
          
    @comic.bitmap = RPG::Cache.windowskin("thought")
        
    end
        
    @show = true
        
    @x = @y = 0

        
    # If waiting for a message to be displayed
        
    if $game_temp.message_text != nil 
          
    @text = $game_temp.message_text
          
          
    # replace shortcuts with original code
          
    $game_system.shortcuts.each { |shortcut, code|
            @
    text.gsub!(shortcut, code)
          }
          
          
    # VERY first thing.  Check to see if this is being set up as a slave
          #  or independent window.
          
    if @text.index(/\\[Ss][Ll][Vv]\[(.*?)\]/) != nil
            
    # is this a new slave window, or a request to display it?
            
    if !$game_system.slave_windows.has_key?($1.to_s)
              
    # there is no such slave window yet.  Set it up.
              
    @text.gsub!(/\\[Ss][Ll][Vv]\[(.*?)\]/, "")
              
    $game_system.slave_windows[$1.to_s] = Window_Slave.new(@text)
              @
    text = ""
              
    @show = false
              terminate_message
              
    return
            
    end
          end
          
    if @text.index(/\\[Ii][Nn][Dd]\[(.*?)\]/) != nil
            
    # is this a new independent window, or a request to display it?
            
    if !$game_system.indy_windows.has_key?($1.to_s)
              
    # there is no such slave window yet.  Set it up.
              
    @text.gsub!(/\\[Ii][Nn][Dd]\[(.*?)\]/, "")
              
    $game_system.indy_windows[$1.to_s] = Window_Slave.new(@text)
              @
    text = ""
              
    @show = false
              terminate_message
              
    return
            
    end
          end
          
          
    # Control text processing
          
    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
          
          
    # window mode
          
    if @text.index(/\\[Mm]/) != nil
            
    if $game_system.ums_mode == NORMAL_MODE
              $game_system
    .ums_mode = FIT_WINDOW_TO_TEXT
            
    else
              
    $game_system.ums_mode = NORMAL_MODE
            end
            
    @text.gsub!(/\\[Mm]/) { "" }
          
    end
          
          
    # window height
          
    @text.gsub!(/\\[Hh][Ee][Ii][Gg][Hh][Tt]\[([0-9]+)\]/) do
            
    $game_system.window_height = $1.to_i
            
    ""
          
    end
          
          
    # window width
          
    @text.gsub!(/\\[Ww][Ii][Dd][Tt][Hh]\[([0-9]+)\]/) do
            
    $game_system.window_width = $1.to_i
            
    ""
          
    end
          
          
    # justification
          
    @text.gsub!(/\\[Jj][Rr]/) do
            
    $game_system.window_justification = RIGHT
            reset_window
            
    ""
          
    end
          
    @text.gsub!(/\\[Jj][Cc]/) do
            
    $game_system.window_justification = CENTER
            reset_window
            
    ""
          
    end      
          
    @text.gsub!(/\\[Jj][Ll]/) do
            
    $game_system.window_justification = LEFT
            reset_window
            
    ""
          
    end
          
          
    # face graphics
          
    @text.gsub!(/\\[Ff][Aa][Cc][Ee]\[(.*?)\]/) do
            
    $game_system.face_graphic = $1.to_s
            
    if $1.to_s == ""
              
    @face.opacity = 0
            end
            
    ""
          
    end
          
    @text.gsub!(/\\[Ff][Ll]/) do
            
    $game_system.face_graphic_justification = LEFT
            
    ""
          
    end
          
    @text.gsub!(/\\[Ff][Rr]/) do
            
    $game_system.face_graphic_justification = RIGHT
            
    ""
          
    end
          
          
    # event centering
          
    @text.gsub!(/\\[Ee]\[([0-9]+)\]/) do
            
    $game_system.message_event = $1.to_i
            
    ""
          
    end
          
          
    # train actor centering
          
    @text.gsub!(/\\[Tt][Aa]\[([0-9]+)\]/) do
            
    $game_system.train_actor = $1.to_i
            
    ""
          
    end
          
          
    # comic thingy
          
    @text.gsub!(/\\[Tt]1/) do
            
    $game_system.comic_style = TALK1
            
    @comic.bitmap = RPG::Cache.windowskin("talk1.png")
            
    ""
          
    end
          
    @text.gsub!(/\\[Tt]2/) do
            
    $game_system.comic_style = TALK2
            
    @comic.bitmap = RPG::Cache.windowskin("talk2.png")
            
    ""
          
    end
          
    @text.gsub!(/\\[Tt][Hh]/) do
            
    $game_system.comic_style = THOUGHT
            
    @comic.bitmap = RPG::Cache.windowskin("thought.png")
            
    ""
          
    end
          
          
    # name window
          
    @text.gsub!(/\\[Nn][Mm]\[(.*?)\]/) do
            
    $game_system.name = $1.to_s
            
    if $1.to_s == ""
              
    @name_window.visible = false
              
    @name_window.dummy_window.visible = false
            end
            
    ""
          
    end
          
    # name party window
          
    @text.gsub!(/\\[Nn][Pp]\[([0-9]+)\]/) do
            
    actor = $game_party.actors[$1.to_i]
            if 
    actor != nil
              actor
    .name
            
    else
              
    ""
            
    end
          end
          
          
    if $game_system.name == ""
            
    @name_window.visible = false
            
    @name_window.dummy_window.visible = false
          end
          
          
          
    # toggle pause
          
    @text.gsub!(/\\[Pp][Tt]/) do
            
    $game_system.show_pause = !$game_system.show_pause
            
    ""
          
    end
          
          
    # text skip code
          
    @text.gsub!(/\\[Ss][Kk][Ii][Pp]/) { "\003" }
          
          
    # shaking
          
    @text.gsub!(/\\[Ss][Kk]\[([0-9]+)\]/) do
            
    $game_system.text_shake = $1.to_i
            
    "\030"
          
    end
          
    @text.gsub!(/\\[Ss][Kk]/) do
            
    "\031"
          
    end
          
    @text.gsub!(/\\[Ss][Hh][Kk]\[([0-9]+)\]/) do
            
    $game_system.shake = $1.to_i
            
    ""
          
    end
          
          
          
    # back opacity
          
    @text.gsub!(/\\[Bb][Oo][Pp][Cc]\[([0-9]+)\]/) do
            
    $game_system.back_opacity = $1.to_i
            self
    .back_opacity = $game_system.back_opacity
            
    ""
          
    end
          
          
    # opacity
          
    @text.gsub!(/\\[Oo][Pp][Cc]\[([0-9]+)\]/) do
            
    $game_system.opacity = $1.to_i
            self
    .opacity = $game_system.opacity
            
    ""
          
    end
          
          
    # Change "\\\\" to "\000" for convenience
          
    @text.gsub!(/\\\\/) { "\000" }
          
    # Change "\\C" to "\001" and "\\G" to "\002"
          
    @text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
          @
    text.gsub!(/\\[Gg]/) { "\002" }
          @
    text.gsub!(/\\[Cc]\[0x([0123456789abcdef]+)\]/) { "\026[#{$1}]" }
          
          
    # ignore code
          
    @text.gsub!(/\\[Ii][Gg][Nn][Rr]/) { "\023" }
          
          
    # slave and indy windows
          
    @text.gsub!(/\\[Ss][Ll][Vv]\[(.*?)\]/) { "\024[#{$1}]" }
          @
    text.gsub!(/\\[Ii][Nn][Dd]\[(.*?)\]/) { "\025[#{$1}]" }
          
          
    # bold and italics
          
    @text.gsub!(/\\[Bb]/) { "\004" }
          @
    text.gsub!(/\\[Ii]/) { "\005" }
          
          
    # shadow
          
    @text.gsub!(/\\[Ss]/) { "\006" }
          
          
    # font
          
    @text.gsub!(/\\[Ff][Oo][Nn][Tt]\[(.*?)\]/) { "\007[#{$1}]" }
          
          
    # pause and wait
          
    @text.gsub!(/\\[Pp]\[([0-9]+)\]/) { "\010[#{$1}]" }
          @
    text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\011[#{$1}]" }
          
          
    # write speed
          
    @text.gsub!(/\\[Ww][Ss]\[([0-9]+)\]/) { "\013[#{$1}]" }
                
          
    # armor, items, skills, and weapons
          
    @text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) { 
            
    item = $data_armors[$1.to_i]
            
    "\014[#{$1}]" + "  " + item.name
          
    }
          @
    text.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) { 
            
    item = $data_items[$1.to_i]
            
    "\015[#{$1}]" + "  " + item.name
          
    }
          @
    text.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) { 
            
    item = $data_skills[$1.to_i]
            
    "\016[#{$1}]" + "  " + item.name
          
    }
          @
    text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) { 
            
    item = $data_weapons[$1.to_i]
            
    "\017[#{$1}]" + "  " + item.name
          
    }
          @
    text.gsub!(/\\[Ii][Cc]\[(.*?)\]/) { 
            
    "\027[#{$1}]"
          
    }
          
          
    # text justification
          
    @text.gsub!(/\\[Tt][Cc]/) { "\020" }
          @
    text.gsub!(/\\[Tt][Ll]/) { "\021" }
          @
    text.gsub!(/\\[Tt][Rr]/) { "\022" }
          
          
    # Resize the window to fit the contents?
          
    if $game_system.ums_mode == FIT_WINDOW_TO_TEXT
            width 
    = 1
            text 
    = @text.split("\n")
            
    height = 0
            i 
    = 0
            
    for line in text
              
    # don't count this line's width if it has the ignr code
              
    if !line.include?("\023")
                
    width = [width, self.contents.text_size(line).width].max
                delta 
    = self.contents.text_size(line).height
                height 
    += delta + (delta * 0.2).to_i
              end
            end
            
            
    if $game_system.face_graphic != "" and ($game_system.face_graphic_position == CENTER or $game_system.face_graphic_position == BOTTOM)
              
    width += @face.bitmap.width
              
    if height < @face.bitmap.height
                height 
    = @face.bitmap.height - 32
              end
            end
            
            
    if height == 0
              height 
    = 1
            end
            
            self
    .width = width + 48
            self
    .height = height + 48 
            self
    .contents = Bitmap.new(width + 16, height)
            
            if 
    $game_system.font == ""
              
    self.contents.font.name = Font.default_name
            
    else
              
    self.contents.font.name = $game_system.font
            end
            
            
    if $game_system.font_color.nil?
              
    self.contents.font.color = normal_color
            
    else
              
    self.contents.font.color = $game_system.font_color
            end
          
    else # normal mode
            
    if self.width != $game_system.window_height or self.height != $game_system.window_width
              self
    .width = $game_system.window_width
              self
    .height = $game_system.window_height
              
              
    # check to see if overall text height is greater than window height
              
    text = @text.split("\n")
              
    height = 0
              i 
    = 0
              
    for line in text
                
    # don't count this line's width if it has the ignr code
                
    if !line.include?("\023")
                  
    delta = self.contents.text_size(line).height
                  height 
    += delta + (delta * 0.2).to_i
                end
              end
              height 
    += 32
              
              
    if (height > self.height)
                
    self.contents = Bitmap.new(self.width - 32, height - 32)
              else
                
    self.contents = Bitmap.new(self.width - 32, self.height - 32)
              
    end
              
              
    if $game_system.font == ""
                
    self.contents.font.name = Font.default_name
              
    else
                
    self.contents.font.name = $game_system.font
              end
              
    if $game_system.font_color.nil?
                
    self.contents.font.color = normal_color
              
    else
                
    self.contents.font.color = $game_system.font_color
              end
            end
          end
          
          
    if $game_system.window_image != nil
            
    # figure out how we're going to resize this          
            
    @window_back.zoom_x = self.width.to_f / @window_back.bitmap.width 
            
    @window_back.zoom_y = self.height.to_f / @window_back.bitmap.height
          end
          
          reset_window
          
          get_x_value
          
          
    @count = Graphics.frame_count
          
    @pause_time = 0
          
    @ignore = false
          
    @ascending = true
          
    @target_x = self.x + $game_system.shake
          
    @target_x2 = @shake_sprite.x + $game_system.text_shake
          
    @done = false
          
    @face_frame = 0
          
    @done = false
          
          self
    .oy = 0
        end
        
        
      end
      
      
    #--------------------------------------------------------------------------
      # * Set Window Position and Opacity Level
      #--------------------------------------------------------------------------
      
    def reset_window (change_opacity = true)
        
    # x-coordinate depends on justification
        
    if $game_system.message_event == -1 and $game_system.train_actor == -1
          
    if $game_system.window_justification == RIGHT
            self
    .x = 640 - $game_system.window_width
          elsif $game_system
    .window_justification == LEFT
            self
    .x = 0
          
    else # center
            
    self.x = (640 - self.width) / 2
          end
        elsif $game_system
    .train_actor >= 0
          
    if $game_system.train_actor == 0 or $game_system.train_actor > $game_party.actors.size - 1
            
    # center on player
            
    event_x = $game_player.screen_x
          
    else
            
    # center on train actor
            
    event_x = $game_train.actors[$game_system.train_actor - 1].screen_x
          end
          self
    .x = event_x - self.width / 2
          
    @comic.x = self.x + (self.width / 2) + 4
        
    else
          if 
    $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil
            
    # center on player
            
    event_x = $game_player.screen_x
          
    else
            
    # center on the event specified
            
    event_x = $game_map.events[$game_system.message_event].screen_x
          end
          self
    .x = event_x - self.width / 2
          
    @comic.x = self.x + (self.width / 2) + 4
        end
        
        
    if $game_temp.in_battle
          self
    .y = 16
        
    else
          if 
    $game_system.message_event == -1 and $game_system.train_actor == -1
            
    case $game_system.message_position
              when 0  
    # up
                
    self.y = 16
              when 1  
    # middle
                
    self.y = (480 - $game_system.window_height) / 2
              when 2  
    # down
                
    self.y = 480 - $game_system.window_height - 24
            end
          elsif $game_system
    .train_actor >= 0
            
    if $game_system.train_actor == 0 or $game_system.train_actor > $game_party.actors.size - 1
              
    # center on player
              
    self.y = $game_player.screen_y - self.height - 48
            
    else
              
    # center on train actor
              
    self.y = $game_train.actors[$game_system.train_actor - 1].screen_y - self.height - 48
            end
            
    @comic.y = self.y + self.height - 2
            
    @comic.angle = 0
          
    else
            if 
    $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil
              
    # above player
              
    self.y = $game_player.screen_y - self.height - 48
            
    else
              
    # above event specified
              
    self.y = $game_map.events[$game_system.message_event].screen_y - self.height - 48
            end
            
    @comic.y = self.y + self.height - 2
            
    @comic.angle = 0
          end
        end
        
    if self.y < 0 + ($game_system.name == "" ? 0 : 16)
          if 
    $game_system.comic_enabled
            
    if $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil
              self
    .y = $game_player.screen_y - 16
            
    else
              
    self.y = $game_map.events[$game_system.message_event].screen_y - 16
            end
            
    @comic.angle = 180
            
    @comic.y = self.y + 2
            
    @comic.x = self.x + (self.width / 2) - 4
          
    else
            
    self.y = 0 + ($game_system.name == "" ? 0 : 16)
          
    end
        elsif self
    .y > 480 - self.height 
          self
    .y = 480 - self.height
        end
        
    if self.x < 0 
          self
    .x = 0
        elsif self
    .x > 680 - self.width - 48
          self
    .x = 640 - self.width
        end
        
        
    if change_opacity
          
    if $game_system.message_frame == 0 and $game_temp.message_text != ""
            
    self.opacity = $game_system.opacity
          
    else
            
    self.opacity = 0
          end
          self
    .back_opacity = $game_system.back_opacity
        end
        
        
    # window back stuff
        
    if $game_system.window_image != nil
          
    @window_back.bitmap = RPG::Cache.windowskin($game_system.window_image)
          @
    window_back.x = self.x
          
    @window_back.y = self.y
        end
        
          
    # face stuff
          
    if $game_system.face_graphic != ""  
            
    # the player has chosen to show a face graphic
            
    if @done and $game_system.resting_face != ""
              
    @face.bitmap = RPG::Cache.picture($game_system.face_graphic + $game_system.resting_face)
              if @
    face_frame * $game_system.face_frame_width >= @face.bitmap.width
                
    @face_frame = 0
              end
            
    else
              @
    face.bitmap = RPG::Cache.picture($game_system.face_graphic)
            
    end
            
            
    # picture y-coordinate
            
    if $game_system.face_graphic_position == ABOVE
              
    @face.y = self.y - @face.bitmap.height
              
    @face_offset = 0
            elsif $game_system
    .face_graphic_position == CENTER
              delta 
    = (@face.bitmap.height - self.height) / 2
              
    @face.y = self.y - delta
              
    if $game_system.animated_faces
                
    @face_offset = $game_system.face_frame_width + 16
              
    else
                @
    face_offset = @face.bitmap.width + 16
              end
            elsif $game_system
    .face_graphic_position == BOTTOM 
              
    @face.y = self.y + self.height - @face.bitmap.height
              
    if $game_system.animated_faces
                
    @face_offset = $game_system.face_frame_width + 16
              
    else
                @
    face_offset = @face.bitmap.width + 16
              end
            
    else # side
              
    delta = (@face.bitmap.height - self.height) / 2
              
    @face.y = self.y - delta
              
    @face_offset = 0
            end
            
            
    # picture x-coordinate
            
    if $game_system.face_graphic_justification == LEFT
              
    if $game_system.face_graphic_position == SIDE
                
    @face.x = self.x - @face.bitmap.width
              
    else
                @
    face.x = self.x + 10
              end
            
    else # right side
              
    if $game_system.animated_faces
                offset 
    = @face.bitmap.width - $game_system.face_frame_width
              
    else
                
    offset = 0
              end
              
    if $game_system.face_graphic_position == SIDE
                
    @face.x = self.x + self.width + offset
              
    else
                @
    face.x = self.x + self.width - @face.bitmap.width - 10 + offset
                
    @face_offset = 0
              end
            end
            
            
    if $game_system.animated_faces
              
    @face.src_rect = Rect.new(@face_frame * $game_system.face_frame_width, 0, $game_system.face_frame_width, @face.bitmap.height)
              if @
    done and $game_system.resting_face != ""
                
    pause = $game_system.resting_animation_pause
              
    else
                
    pause = $game_system.animation_pause
              end
              
    if Graphics.frame_count % pause == 0
                
    @animate_face = true
              end
              
    if @animate_face
                
    if Graphics.frame_count % 3 == 0
                  
    @face_frame += 1
                  
    if @face_frame * $game_system.face_frame_width >= @face.bitmap.width
                    
    @face_frame = 0
                    
    @animate_face = false
                  end
                end
              end
            end
          end
          
          
    # name window
          
    if $game_system.name != ""
            
    @name_window.x = self.x
            
    @name_window.y = self.y - 36
            
    @name_window.set_name($game_system.name)
          
    end
          
          
    # If choice
        
    if $game_temp.choice_max > 0
          
    @choice_window.set_choices($game_temp.choices)
          
    # determine x and y coords for choice window
          
    if $game_system.choice_justification == LEFT
            
    @choice_window.x = self.x
          
    else
            @
    choice_window.x = self.x + self.width - @choice_window.width
          end
          
    if $game_system.choice_position == ABOVE
            
    # check to make sure there is enough room above the textbox
            
    if self.y < @choice_window.height
              
    # not enough room above, place below
              
    @choice_window.y = self.y + self.height
            
    else
              
    # draw above
              
    @choice_window.y = self.y - @choice_window.height
            end
          elsif $game_system
    .choice_position == BOTTOM
            
    # check to make sure there is enough room below the textbox
            
    if (480 - self.y - self.height) < @choice_window.height
              
    # not enough room below, place above
              
    @choice_window.y = self.y - @choice_window.height
            
    else
              
    # draw below 
              
    @choice_window.y = self.y + self.height
            end
          
    else # side
            
    if $game_system.choice_justification == LEFT
              
    # check to make sure there's room on the left side
              
    if self.y < @choice_window.width
                
    # not enough room on the side, check to make sure there's room below
                
    if (480 - self.y - self.height) < @choice_window.height
                  
    # not enough room below, place above
                  
    @choice_window.y = self.y - @choice_window.height
                
    else
                  
    # draw below 
                  
    @choice_window.y = self.y + self.height
                end
              
    else
                
    # place on the left side
                
    @choice_window.y = self.y
                
    @choice_window.x = self.x - @choice_window.width
              end
            
    else # right
              # check to make sure there's room on the right side
              
    if (680 - (self.y + self.width)) < @choice_window.width
                
    # not enough room on the side, check to make sure there's room below
                
    if (480 - self.y - self.height) < @choice_window.height
                  
    # not enough room below, place above
                  
    @choice_window.y = self.y - @choice_window.height
                
    else
                  
    # draw below 
                  
    @choice_window.y = self.y + self.height
                end
              
    else
                
    # place on the left side
                
    @choice_window.y = self.y
                
    @choice_window.x = self.x + self.width
              end
            end
          end
        end
        
        
    # If number input
        
    if $game_temp.num_input_variable_id > 0
          
    if @input_number_window == nil
            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
          end
          
    # determine x and y coords for number input window
          
    if $game_system.choice_justification == LEFT
            
    @input_number_window.x = self.x
          
    else
            @
    input_number_window.x = self.x + self.width - @input_number_window.width
          end
          
    if $game_system.choice_position == ABOVE
            
    # check to make sure there is enough room above the textbox
            
    if self.y < @input_number_window.height
              
    # not enough room above, place below
              
    @input_number_window.y = self.y + self.height
            
    else
              
    # draw above
              
    @input_number_window.y = self.y - @choice_window.height
            end
          elsif $game_system
    .choice_position == BOTTOM
            
    # check to make sure there is enough room below the textbox
            
    if (480 - self.y - self.height) < @input_number_window.height
              
    # not enough room below, place above
              
    @input_number_window.y = self.y - @input_number_window.height
            
    else
              
    # draw below 
              
    @input_number_window.y = self.y + self.height
            end
          
    else # side
            
    if $game_system.choice_justification == LEFT
              
    # check to make sure there's room on the left side
              
    if self.y < @input_number_window.width
                
    # not enough room on the side, check to make sure there's room below
                
    if (480 - self.y - self.height) < @input_number_window.height
                  
    # not enough room below, place above
                  
    @input_number_window.y = self.y - @input_number_window.height
                
    else
                  
    # draw below 
                  
    @input_number_window.y = self.y + self.height
                end
              
    else
                
    # place on the left side
                
    @input_number_window.y = self.y
                
    @input_number_window.x = self.x - @choice_window.width
              end
            
    else # right
              # check to make sure there's room on the right side
              
    if (680 - (self.y + self.width)) < @input_number_window.width
                
    # not enough room on the side, check to make sure there's room below
                
    if (480 - self.y - self.height) < @input_number_window.height
                  
    # not enough room below, place above
                  
    @input_number_window.y = self.y - @input_number_window.height
                
    else
                  
    # draw below 
                  
    @input_number_window.y = self.y + self.height
                end
              
    else
                
    # place on the left side
                
    @input_number_window.y = self.y
                
    @input_number_window.x = self.x + self.width
              end
            end
          end
        end
      end
      
    #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      
    def update
        super
        
        
    if (@contents_showing and $game_system.message_event != -1 and $game_system.shake == 0) or $game_system.animated_faces
          reset_window
    (false)
        
    end
        
        
    if $game_system.shake != 0  # shake the window
          
    if @ascending
            
    if @target_x != self.x
              self
    .x += 1
            
    else
              @
    ascending = false
              
    @target_x = self.x - ($game_system.shake * 2)
            
    end
          
    else 
            if @
    target_x != self.x
              self
    .x -= 1
            
    else
              @
    ascending = true
              
    @target_x = self.x + ($game_system.shake * 2)
            
    end
          end
        end
        
        
    if $game_system.text_shake != 0  # shake the text
          
    if @ascending
            
    if @target_x2 != @shake_sprite.x
              
    @shake_sprite.x += 1
            
    else
              @
    ascending = false
              
    @target_x2 = @shake_sprite.x - ($game_system.text_shake * 2)
            
    end
          
    else 
            if @
    target_x2 != @shake_sprite.x
              
    @shake_sprite.x -= 1
            
    else
              @
    ascending = true
              
    @target_x2 = @shake_sprite.x + ($game_system.text_shake * 2)
            
    end
          end
        end
        
        
    @name_window.update
        
        
    if @wait > 0
          
    @wait -= 1
          
    if @wait == 0
            terminate_message
            
    return
          
    end
        end
        
        
    # If fade in
        
    if @fade_in
          
    if $game_temp.message_text == ""
            
    @fade_in = false
            
    return
          
    end
          self
    .contents_opacity += 24
          
    if $game_system.face_graphic != ""
            
    @face.opacity += 24
          end
          
    if $game_system.window_image != nil
            
    @window_back.opacity += 24
          end
          
    if $game_system.comic_enabled and $game_system.message_event != -1
            
    @comic.opacity = self.opacity
            
    @comic.visible = self.visible
          end
          
    @shake_sprite.visible = true
          
          
    if $game_system.name != "" and @show
            
    @name_window.visible = true
            
    if $game_system.name_window
              
    @name_window.dummy_window.visible = true
            end
          end
          
    if @input_number_window != nil
            
    @input_number_window.contents_opacity += 24
          end
          
    if self.contents_opacity == 255
            
    @fade_in = false
          end
          
    return
        
    end
        
        
    # write the text
        
    if @text != nil and @text != ""
          
    speed = $game_system.write_speed
          
    if $game_system.text_mode == ALL_AT_ONCE or $game_temp.in_battle
            
    while (c = @text.slice!(/./m)) != nil
              write_char
    (c)
            
    end
            $game_system
    .slave_windows.each_value { |window| window.write_all }
            return
          
    end
          
    if $game_system.text_skip
            
    if $game_system.skip_mode == WRITE_FASTER and Input.press?(Input::C)
              
    # the player is holding the action button, write faster
              
    speed /= 3
            elsif $game_system
    .skip_mode == WRITE_ALL and Input.trigger?(Input::C)
              
    # the player pressed the action button, write all the text
              
    while (c = @text.slice!(/./m)) != nil
                write_char
    (c)
              
    end
              $game_system
    .slave_windows.each_value { |window| window.write_all }
              return
            
    end
          end
          
    while @ignore
            c 
    = @text.slice!(/./m)
            if 
    c != nil
              write_char
    (c)
            
    end
          end
          
    if @pause_time > 0
            
    @pause_time -= 1
            
    return
          
    end
          
    if Graphics.frame_count - @count >= speed
            
    if $game_system.sound_effect != ""
              
    Audio.se_play("Audio/SE/" + $game_system.sound_effect, 80, 100)
            
    end
            
    @count = Graphics.frame_count
            c 
    = @text.slice!(/./m)
            if 
    c != nil
              write_char
    (c)
            
    end
          end
          
    return
        
    end
        
        
    if $game_system.animated_faces and $game_system.resting_face != ""
          
    @done = true
        end
        
        
    # If inputting number
        
    if @input_number_window != nil
          
    @input_number_window.update
          
    # Confirm
          
    if Input.trigger?(Input::C)
            
    $game_system.se_play($data_system.decision_se)
            
    $game_variables[$game_temp.num_input_variable_id] =
              @
    input_number_window.number
            $game_map
    .need_refresh = true
            
    # Dispose of number input window
            
    @input_number_window.dispose
            
    @input_number_window = nil
            terminate_message
          end
          
    return
        
    end
        
        
    if @wait != 0
          
    return
        
    end
        
        
    # If message is being displayed and contents are all written
        
    if @contents_showing
          
    # if choice
          
    if $game_temp.choice_max > 0
            
    if !@choice_window.active
              
    @choice_window.visible = true
              
    @choice_window.active = true
              
    @choice_window.index = 0
            end
            
    @choice_window.update
          
    else
            
    # If choice isn't being displayed, show pause sign
            
    self.pause = $game_system.show_pause
          end
            
    # Cancel
            
    if Input.trigger?(Input::B)
              if 
    $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
                $game_system
    .se_play($data_system.cancel_se)
                
    $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
                
    terminate_message
              end
            end
            
    # Confirm
            
    if Input.trigger?(Input::C) and !(@wait > 0)
              @
    done = true
              $game_system
    .slave_windows.each_value { |window| 
                
    window.write_all 
                
    if !window.done
                  
    @done = false
                end
              
    }
              if @
    done
                
    if $game_temp.choice_max > 0
                  $game_system
    .se_play($data_system.decision_se)
                  
    $game_temp.choice_proc.call(@choice_window.index)
                
    end
                terminate_message
              
    else
                @
    finishing_up = true
              end
            end
            
    return
          
    end
          
        
    if @finishing_up
          $game_system
    .slave_windows.each_value { |window| 
            if !
    window.done
              
    @done = true
              
    break
            
    end
          
    }
          
          if @
    done = false
            terminate_message
          end
        end
        
    # If display wait message or choice exists when not fading out
        
    if @fade_out == false and $game_temp.message_text != nil
          
    @contents_showing = true
          $game_temp
    .message_window_showing = true
          
          reset_window
          refresh
          Graphics
    .frame_reset
          
    if @show
            self
    .visible = true
          end
          self
    .contents_opacity = 0
          
    if @input_number_window != nil
            
    @input_number_window.contents_opacity = 0
          end
          
    @fade_in = true
          
    return
        
    end
        
    # If message which should be displayed is not shown, but window is visible
        
    if self.visible
          
    @fade_out = true
          self
    .opacity -= 48
          
    @name_window.opacity -= 48
          
    @shake_sprite.opacity -= 48
          
    @comic.opacity -= 48
          
    @face.opacity -= 48
          
    @window_back.opacity -= 48
          
    if self.opacity == 0
            self
    .visible = false
            
    @face.opacity = 0
            
    @window_back.opacity = 0
            
    @choice_window.visible = false
            
    @choice_window.active = false
            
    @comic.opacity = 0
            
    @name_window.visible = false
            
    @shake_sprite.bitmap.clear
            
    @shake_sprite.opacity = 255
            
    @name_window.dummy_window.visible = false
            
    @name_window.update
            
    @fade_out = false
            $game_temp
    .message_window_showing = false
          end
          
    return
        
    end
        
        
    if $game_temp.battle_calling or $game_temp.shop_calling or $game_temp.name_calling or $game_temp.menu_calling or $game_temp.save_calling or $game_temp.debug_calling
          
            $game_system
    .indy_windows.each_pair {|name, window| 
              if 
    window.show == true
                window
    .dispose
                $game_system
    .indy_windows.delete(name)
              
    end
            
    }
        
    end
      end
      
      
    #--------------------------------------------------------------------------
      # * Process and write the given character
      #--------------------------------------------------------------------------
      
    def write_char(c)
        if 
    c == "\000"
          
    # Return to original text
          
    c = "\\"
        
    end
        
    # If \C[n]
        
    if c == "\001"
        
    # Change text color
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    color = $1.to_i
          
    if color >= 0 and color <= 7
            self
    .contents.font.color = text_color(color)
          
    end
          
    # go to next text
          
    return
        
    end
        
    # If \G
        
    if c == "\002"
          
    # Make gold window
          
    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
          
    # go to next text
          
    return
        
    end
        
    # If \skip
        
    if c == "\003"
          
    # toggle text skipping
          
    $game_system.text_skip = !$game_system.text_skip
          
    # go to next text
          
    return
        
    end
        
    # If \b
        
    if c == "\004"
          
    # toggle bold
          
    self.contents.font.bold = !self.contents.font.bold
          
    # go to next text
          
    return
        
    end
        
    # If \i
        
    if c == "\005"
          
    # toggle italics
          
    self.contents.font.italic = !self.contents.font.italic
          
    # go to next text
          
    return
        
    end
        
    # If \s
        
    if c == "\006"
          
    # toggle shadow
          
    $game_system.shadowed_text = !$game_system.shadowed_text
          
    # go to next text
          
    return
        
    end
        
    # If \font
        
    if c == "\007"
          
    # change font
          
    @text.sub!(/\[(.*?)\]/, "")
          
    font = $1.to_s
          $game_system
    .font = font
          
    if font == ""
            
    self.contents.font.name = Font.default_name
          
    else
            
    self.contents.font.name = font
          end
          
    # go to next text
          
    return
        
    end
        
    # If \p[n]
        
    if c == "\010"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          @
    pause_time = $1.to_i

          
    # go to next text
          
    return
        
    end
        
        
    # If \w[n]
        
    if c == "\011"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          @
    wait = $1.to_i

          
    # go to next text
          
    return
        
    end
        
        
    # If \ws[n]
        
    if c == "\013"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    $game_system.write_speed = $1.to_i

          
    # go to next text
          
    return
        
    end 
        
    # If \oa[n]
        
    if c == "\014"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_armors[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    line = self.contents.text_size("dj").height
          self
    .contents.blt(@x + 4, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \oi[n]
        
    if c == "\015"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_items[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    line = self.contents.text_size("dj").height
          self
    .contents.blt(@x + 4, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \ic[name]
        
    if c == "\027"
          
    @text.sub!(/\[(.*?)\]/, "")
          
    # draw the icon
          
    icon = RPG::Cache.icon($1.to_s)
          
    line = self.contents.text_size("dj").height
          self
    .contents.blt(@x + 4, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \os[n]
        
    if c == "\016"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_skills[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    line = self.contents.text_size("dj").height
          self
    .contents.blt(@x + 2, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \ow[n]
        
    if c == "\017"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_weapons[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    line = self.contents.text_size("dj").height
          self
    .contents.blt(@x + 2, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24
          
          
    # go to next text
          
    return
        
    end
        
        
    # If \tc
        
    if c == "\020"
          
    # center justify
          
    $game_system.text_justification = CENTER
          get_x_value
          
    # go to next text
          
    return
        
    end
        
        
    # If \tl
        
    if c == "\021"
          
    # left justify
          
    $game_system.text_justification = LEFT
          get_x_value
          
    # go to next text
          
    return
        
    end
        
        
    # If \tr
        
    if c == "\022"
          
    # right justify
          
    $game_system.text_justification = RIGHT
          get_x_value
          
    # go to next text
          
    return
        
    end
        
        
    # If \ignr
        
    if c == "\023"
          
    # set ignore flage
          
    @ignore = true
          
    # go to next text
          
    return
        
    end
        
        
    # if \slv
        
    if c == "\024"
          
    # we need to show a slave window
          
    @text.sub!(/\[(.*?)\]/, "")
          
    name = $1.to_s
          $game_system
    .slave_windows[name].show = true
          
    return
        
    end
        
        
    # if \ind
        
    if c == "\025"
          
    # we need to show a independent window
          
    @text.sub!(/\[(.*?)\]/, "")
          
    name = $1.to_s
          
    if $game_system.indy_windows[name].show
            $game_system
    .indy_windows[name].dispose
            $game_system
    .indy_windows.delete(name)
          else
            
    $game_system.indy_windows[name].show = true
          end
          
    return
        
    end
        
        
    # if \c (hex color)
        
    if c == "\026"
          
    # convert hex color to RGB
          
    @text.sub!(/\[([0123456789abcdef]+)\]/, "")
          
    hex_code = $1.to_s
         
          red   
    = ("0x" + hex_code.slice(0..1)).hex
          blue  
    = ("0x" + hex_code.slice(2..3)).hex
          green 
    = ("0x" + hex_code.slice(4..5)).hex
          
          self
    .contents.font.color = Color.new(red, blue, green)
          return
        
    end
        
        
    # if \sk[i] (begin shake)
        
    if c == "\030"
          
    @shake_text = true
          
    return
        
    end
        
    # if \sk (end shake)
        
    if c == "\031"
          
    @shake_text = false
          
    return
        
    end
        
        
    # If new line text
        
    if c == "\n"
          
    # Add 1 to y
          
    if !@ignore
            
    @y += 1
          end
          
    # check for scroll
          
    line = self.contents.text_size("dj").height
          
    if @y * line + 2 > self.height - 32 - line and @text.slice(/./m) != nil
            self
    .oy += line
          end
          
    if @text != ""
            
    get_x_value
          end
          
    @ignore = false

          
    # go to next text
          
    return
        
    end
        
    if @ignore
          
    return
        
    end
        
    # Draw text
        
    line = self.contents.text_size("dj").height
        
    if $game_system.shadowed_text
          old_color 
    = self.contents.font.color.clone
          if @
    shake_text
            
    @shake_sprite.bitmap.font.color = $game_system.shadow_color     
            
    @shake_sprite.bitmap.draw_text(6 + @x, line * @y + 2, 40, 32, c)
            @
    shake_sprite.bitmap.font.color = old_color
          
    else
            
    self.contents.font.color = $game_system.shadow_color     
            self
    .contents.draw_text(6 + @x, line * @y + 2, 40, 32, c)
            
    self.contents.font.color = old_color
          end
        end
        
    if @shake_text
          
    @shake_sprite.bitmap.draw_text(4 + @x, line * @y, 40, 32, c)
        else
          
    self.contents.draw_text(4 + @x, line * @y, 40, 32, c)
        
    end
        
    # Add x to drawn text width
        
    @x += self.contents.text_size(c).width
      end
      
      def get_x_value
        
    # text justification - offset for first line
        
    if $game_system.text_justification == CENTER
          
    # get the length of the current line
          
    w = self.contents.text_size(@text.split("\n")[0]).width
          
    @x = (self.width - w - 48) / 2
        elsif $game_system
    .text_justification == RIGHT
          
    # get the length of the current line
          
    w = self.contents.text_size(@text.split("\n")[0]).width
          
    @x = self.width - w - 48
        
    else # left
          
    if $game_system.face_graphic == ""
            
    @x = 0
          
    else
            @
    x = @face_offset
          end
        end
      end
        
    end

    #==============================================================================
    # ** Window_Choice
    #------------------------------------------------------------------------------
    #  This message window is used to display choices.
    #==============================================================================
    class Window_Choice < Window_Selectable
      def initialize 
    (choices)
        
    super(0, 0, 32, choices.size * 32)
        
    self.visible = false
        self
    .active = false
        self
    .z = 9999
        
    @index = 0
        
    @item_max = choices.size
        
    @choices = choices
        self
    .contents = Bitmap.new(32, 32)
        
    self.opacity = $game_system.opacity
        self
    .back_opacity = $game_system.back_opacity
      end
      
      def refresh
        
    # determine necessary width
        
    width = 64
        
    for line in @choices
          width 
    = [width, (self.contents.text_size(line).width + 48)].max
        end
        self
    .width = width
        self
    .height = @choices.size * 32 + 32
        self
    .contents = Bitmap.new(width - 32, height - 32)
        if 
    $game_system.font == ""
          
    self.contents.font.name = Font.default_name
        
    else
          
    self.contents.font.name = $game_system.font
        end
        
    if $game_system.font_color.nil?
          
    self.contents.font.color = normal_color
        
    else
          
    self.contents.font.color = $game_system.font_color
        end
        
    if $game_system.windowskin != ""  
          
    self.windowskin = RPG::Cache.windowskin($game_system.windowskin)
        else
          
    self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)
        
    end
        
        
    # draw choices
        
    @y = 0
        
    for line in @choices
          
    @x = 0
          
    @text = line
          
    while (c = line.slice!(/./m)) != nil
            write_char
    (c)
          
    end
          
    @y += 1
        end
      end
      
      def write_char
    (c)
        
        
    # If \oa[n]
        
    if c == "\014"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_armors[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    self.contents.blt(@x + 4, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24
        end
        
        
    # If \oi[n]
        
    if c == "\015"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_items[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    self.contents.blt(@x + 4, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \ic[name]
        
    if c == "\027"
          
    @text.sub!(/\[(.*?)\]/, "")
          
    # draw the icon
          
    icon = RPG::Cache.icon($1.to_s)
          
    self.contents.blt(@x + 4, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \os[n]
        
    if c == "\016"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_skills[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \ow[n]
        
    if c == "\017"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_weapons[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24
          
          
    # go to next text
          
    return
        
    end
        
        
    # If \ic[name]
        
    if c == "\027"
          
    @text.sub!(/\[(.*?)\]/, "")
          
    # draw the icon
          
    icon = RPG::Cache.icon($1.to_s)
          
    self.contents.blt(@x + 4, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \C[n]
        
    if c == "\001"
        
    # Change text color
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    color = $1.to_i
          
    if color >= 0 and color <= 7
            self
    .contents.font.color = text_color(color)
          
    end
          
    # go to next text
          
    return
        
    end
        
        
    # if \c (hex color)
        
    if c == "\026"
          
    # convert hex color to RGB
          
    @text.sub!(/\[([0123456789abcdef]+)\]/, "")
          
    hex_code = $1.to_s
         
          red   
    = ("0x" + hex_code.slice(0..1)).hex
          blue  
    = ("0x" + hex_code.slice(2..3)).hex
          green 
    = ("0x" + hex_code.slice(4..5)).hex
          
          self
    .contents.font.color = Color.new(red, blue, green)
          return
        
    end
        
        
    # Draw text
        
    line = 32
        
    if $game_system.shadowed_text
          old_color 
    = self.contents.font.color.clone
          
    self.contents.font.color = $game_system.shadow_color     
          self
    .contents.draw_text(6 + @x, line * @y + 2, 40, 32, c)
          
    self.contents.font.color = old_color
        end
        self
    .contents.draw_text(4 + @x, line * @y, 40, 32, c)
        
    # Add x to drawn text width
        
    @x += self.contents.text_size(c).width
      end
          
      def set_choices
    (choices)
        @
    choices = Array.new
        for 
    choice in choices
          
    @choices.push(choice.clone)
        
    end
        
    @item_max = @choices.size
        
    for choice in choices
          
    # variables
          
    choice.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
          
          
    # actor names
          
    choice.gsub!(/\\[Nn]\[([0-9]+)\]/) { 
            
    $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
          
    }
          
    choice.gsub!(/\\[Nn][Pp]\[([0-9]+)\]/) { 
            
    $game_party.actors[$1.to_i] != nil ? $game_party.actors[$1.to_i].name : ""
          
    }
          
          
    # armor, items, skills, and weapons
          
    choice.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) { 
            
    item = $data_armors[$1.to_i]
            
    "\014[#{$1}]" + "  " + item.name
          
    }
          
    choice.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) { 
            
    item = $data_items[$1.to_i]
            
    "\015[#{$1}]" + "  " + item.name
          
    }
          
    choice.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) { 
            
    item = $data_skills[$1.to_i]
            
    "\016[#{$1}]" + "  " + item.name
          
    }
          
    choice.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) { 
            
    item = $data_weapons[$1.to_i]
            
    "\017[#{$1}]" + "  " + item.name
          
    }
          
    choice.gsub!(/\\[Ii][Cc]\[(.*?)\]/) { 
            
    "\027[#{$1}]"
          
    }
          
          
    # color
          
    choice.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
          
    choice.gsub!(/\\[Cc]\[0x([0123456789abcdef]+)\]/) { "\026[#{$1}]" }
          
        
    end
        refresh
      end
    end

    #==============================================================================
    # ** Window_Name
    #------------------------------------------------------------------------------
    #  This window is used to display names above the message window.  Uncomment
    #   and modify the various sections to customize.
    #==============================================================================
    class Window_Name < Window_Base
      attr_accessor 
    :dummy_window
      
      def initialize
        super
    (0, 0, 32, 64)
        
    self.contents = Bitmap.new(32, 32)
        
    self.opacity = 0
        
        
        
    @dummy_window = Window_Dummy.new
        
        
    self.visible = false
      end
      
      def set_name
    (name)
        @
    name = name
        refresh
      end
      
      def refresh
        
    if @name == nil
          
    return
        
    end
        self
    .width = self.contents.text_size(@name).width + 48
        self
    .contents = Bitmap.new(width - 32, height - 32)
        
        
        if 
    $game_system.name_window
          
    @dummy_window.x = self.x
          
    @dummy_window.y = self.y + 12
          
    @dummy_window.set(height - 24, width - 12)
        
    end
        
        
    if $game_system.font == ""
          
    self.contents.font.name = Font.default_name
        
    else
          
    self.contents.font.name = $game_system.font
        end
        
    # uncomment this and change the font to give the name window a fancy font
        #self.contents.font.name = "Ariel"
        
    self.contents.font.color = Color.new(0, 0, 0, 255)
        
    self.contents.draw_text(0, 0, self.width, 32, @name)
        
    self.contents.draw_text(0, 2, self.width, 32, @name)
        
    self.contents.draw_text(2, 0, self.width, 32, @name)
        
    self.contents.draw_text(2, 2, self.width, 32, @name)
        
    # change the color to give the name window a seperate color
        
    self.contents.font.color = normal_color
        self
    .contents.draw_text(1, 1, self.width, 32, @name)
      
    end
      
      def visible
    =(v)
        if 
    $game_system.name_window
          
    @dummy_window.visible = v
        end
        super
    (v)
      
    end
      
      
      
      def update
        super
        
    if $game_system.name_window
          
    @dummy_window.x = self.x
          
    @dummy_window.y = self.y + 12
          
    @dummy_window.update
        end
      end
      
      def dispose
        
    @dummy_window.dispose
        super
      end
    end

    class Window_Dummy < Window_Base
      def initialize
        super
    (0, 0, 32, 64)
        
    self.z = 9999
        self
    .visible = false
        
      end
      
      def set
    (height, width)
        
    self.height = height
        self
    .width = width
      end
      
      def update
        super
        
    if $game_system.windowskin != ""  
          
    self.windowskin = RPG::Cache.windowskin($game_system.windowskin)
        else
          
    self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)
        
    end
    #    self.windowskin = RPG::Cache.windowskin('sandstone')
      
    end
    end

    #==============================================================================
    # ** Window_Slave
    #------------------------------------------------------------------------------
    #  These are slave windows to the main message window.  They will close when 
    #   the user terminates them.  Initial settings are identical to the main 
    #   message window, with one exception.  When in normal mode, it will apear
    #   above if the main message is below, below if it is above or centered.  Use
    #   message codes to change the settings for this window.
    #==============================================================================
    class Window_Slave < Window_Base
      attr_accessor 
    :show
      attr_reader 
    :done
      
      def write_all
        
    @write_all = true
      end
      
      
    #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      
    def initialize (text)
        
    super(0, 0, 33, 33)
        @
    text = text
        
        
    # x-coordinate depends on justification
        
    if @justification == RIGHT
          self
    .x = 640 - self.width
        elsif 
    @justification == LEFT
          self
    .x = 0
        
    else # center
          
    self.x = (640 - self.width) / 2
        end
        
    # y-coordinate depends on height
        
    self.y = 480 - $game_system.window_height - 16
        self
    .contents = Bitmap.new(width - 32, height - 32)
        if 
    $game_system.font == ""
          
    self.contents.font.name = Font.default_name
        
    else
          
    self.contents.font.name = $game_system.font
        end
        self
    .visible = false
        self
    .z = 9998
        
    @fade_in = false
        
    @fade_out = false
        
    @contents_showing = false
        
        
    # face graphic sprite
        
    @face = Sprite.new
        @
    face.opacity = 0
        
    @face.z = self.z + 1
        
    @face_offset = 0
        
        
    # choice window
        
    @choice_window = Window_Choice.new([])
        @
    choice_window.back_opacity = $game_system.back_opacity
        
        
    @comic_style = $game_system.comic_style
        
    @name = $game_system.name
        
        
    # comic sprite
        
    @comic = Sprite.new
        @
    comic.opacity = 0
        
    @comic.z = self.z + 1
        
    if @comic_style == TALK1
          
    @comic.bitmap = RPG::Cache.windowskin("talk1")
        
    elsif @comic_style == TALK2
          
    @comic.bitmap = RPG::Cache.windowskin("talk2")
        else 
    # thought
          
    @comic.bitmap = RPG::Cache.windowskin("thought")
        
    end
        
        
    # shake bitmaps
        
    @shake_sprite = Sprite.new
        @
    shake_sprite.bitmap = Bitmap.new(width - 32, height - 32)
        @
    shake_sprite.x = self.x + 16
        
    @shake_sprite.y = self.y + 8
        
    @shake_sprite.z = self.z + 1
        
        
    @pause_time = 0
        
    @wait = 0
        
        
    @mode = $game_system.ums_mode
        self
    .height = $game_system.window_height
        self
    .width = $game_system.window_width
        
    @justification = $game_system.window_justification
        
    @face_graphic = $game_system.face_graphic
        
    @face_graphic_justification = $game_system.face_graphic_justification
        
    @message_event = $game_system.message_event
        
    if $game_system.message_position == 2 # down
          
    @message_position = 0
        
    else
          @
    message_postion = 2
        end
        
    @face_graphic_position = $game_system.face_graphic_position
        
    if $game_system.font == ""
          
    @font = Font.default_name
        
    else
          @
    font = $game_system.font
        end
        
    @text_justification = $game_system.text_justification
        
        
    @shake = $game_system.shake
        
        
    @face_frame = 0
        
        refresh
      end
      
    #--------------------------------------------------------------------------
      # * Dispose
      #--------------------------------------------------------------------------
      
    def dispose
        terminate_message
        $game_temp
    .message_window_showing = false
        
    if @input_number_window != nil
          
    @input_number_window.dispose
        end
        
    @face.dispose
        
    @choice_window.dispose
        
    @comic.dispose
        
    @shake_sprite.dispose
        
    if @name_window != nil
          
    @name_window.dispose
        end
        super
      end
      
    #--------------------------------------------------------------------------
      # * Terminate Message
      #--------------------------------------------------------------------------
      
    def terminate_message
        self
    .active = false
        self
    .pause = false
        self
    .contents.clear
        
    # Clear showing flag
        
    @contents_showing = false
        
    # Call message callback
        
    if $game_temp.message_proc != nil
          $game_temp
    .message_proc.call
        end
        
    # Clear variables related to text, choices, and number input
        
    $game_temp.message_text = nil
        $game_temp
    .message_proc = nil
        $game_temp
    .choice_start = 99
        $game_temp
    .choice_max = 0
        $game_temp
    .choice_cancel_type = 0
        $game_temp
    .choice_proc = nil
        $game_temp
    .num_input_start = 99
        $game_temp
    .num_input_variable_id = 0
        $game_temp
    .num_input_digits_max = 0
        
    # Open gold window
        
    if @gold_window != nil
          
    @gold_window.dispose
          
    @gold_window = nil
        end
        
    @choice_window.visible = false
        
    @choice_window.active = false
        
    @comic.opacity = 0
      end
      
    #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      
    def refresh
        
        self
    .contents.clear
        
    if $game_system.font_color.nil?
          
    self.contents.font.color = normal_color
        
    else
          
    self.contents.font.color = $game_system.font_color
        end
        
    if $game_system.windowskin != ""  
          
    self.windowskin = RPG::Cache.windowskin($game_system.windowskin)
        else
          
    self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)
        
    end
        
    @x = @y = 0

        
    # If waiting for a message to be displayed
        
    if @text != nil
          
    # replace shortcuts with original code
          
    $game_system.shortcuts.each { |shortcut, code|
            @
    text.gsub!(shortcut, code)
          }
          
          
    # Control text processing
          
    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
          
          
    # window mode
          
    if @text.index(/\\[Mm]/) != nil
            
    if $game_system.ums_mode == NORMAL_MODE
              
    @mode = FIT_WINDOW_TO_TEXT
            
    else
              @
    mode = NORMAL_MODE
            end
            
    @text.gsub!(/\\[Mm]/) { "" }
          
    end
          
          
    # window height
          
    @text.gsub!(/\\[Hh][Ee][Ii][Gg][Hh][Tt]\[([0-9]+)\]/) do
            
    self.height = $1.to_i
            
    ""
          
    end
          
          
    # window width
          
    @text.gsub!(/\\[Ww][Ii][Dd][Tt][Hh]\[([0-9]+)\]/) do
            
    self.width = $1.to_i
            
    ""
          
    end
          
          
    # justification
          
    @text.gsub!(/\\[Jj][Rr]/) do
            @
    justification = RIGHT
            reset_window
            
    ""
          
    end
          
    @text.gsub!(/\\[Jj][Cc]/) do
            @
    justification = CENTER
            reset_window
            
    ""
          
    end      
          
    @text.gsub!(/\\[Jj][Ll]/) do
            @
    justification = LEFT
            reset_window
            
    ""
          
    end
          
          
    # face graphics
          
    @text.gsub!(/\\[Ff][Aa][Cc][Ee]\[(.*?)\]/) do
            @
    face_graphic = $1.to_s
            
    if $1.to_s == ""
              
    @face.opacity = 0
            end
            
    ""
          
    end
          
    @text.gsub!(/\\[Ff][Ll]/) do
            @
    face_graphic_justification = LEFT
            
    ""
          
    end
          
    @text.gsub!(/\\[Ff][Rr]/) do
            @
    face_graphic_justification = RIGHT
            
    ""
          
    end
          
          
    # event centering
          
    @text.gsub!(/\\[Ee]\[([0-9]+)\]/) do
            @
    message_event = $1.to_i
            
    ""
          
    end
          
          
    # comic thingy
          
    @text.gsub!(/\\[Tt]1/) do
            @
    comic_style = TALK1
            
    @comic.bitmap = RPG::Cache.windowskin("talk1.png")
            
    ""
          
    end
          
    @text.gsub!(/\\[Tt]2/) do
            @
    comic_style = TALK2
            
    @comic.bitmap = RPG::Cache.windowskin("talk2.png")
            
    ""
          
    end
          
    @text.gsub!(/\\[Tt][Hh]/) do
            @
    comic_style = THOUGHT
            
    @comic.bitmap = RPG::Cache.windowskin("thought.png")
            
    ""
          
    end
          
          
    # name window
          
    @text.gsub!(/\\[Nn][Mm]\[(.*?)\]/) do
            @
    name = $1.to_s
            
    if $1.to_s == "" and @name_window != nil
              
    @name_window.visible = false
            end
            
    ""
          
    end
          
    if @name != ""
            
    # name window
            
    @name_window = Window_Name.new
            @
    name_window.z = self.z + 1
            
    @name_window.set_name(@name)
          
    end
          
          
    # shaking
          
    @text.gsub!(/\\[Ss][Kk]\[([0-9]+)\]/) do
            
    $game_system.text_shake = $1.to_i
            
    "\030"
          
    end
          
    @text.gsub!(/\\[Ss][Kk]/) do
            
    "\031"
          
    end
          
    @text.gsub!(/\\[Ss][Hh][Kk]\[([0-9]+)\]/) do
            @
    shake = $1.to_i
            
    ""
          
    end
          
          
    # back opacity
          
    @text.gsub!(/\\[Bb][Oo][Pp][Cc]\[([0-9]+)\]/) do
            
    self.back_opacity = $1.to_i
            
    ""
          
    end
          
          
    # opacity
          
    @text.gsub!(/\\[Oo][Pp][Cc]\[([0-9]+)\]/) do
            
    self.opacity = $1.to_i
            
    ""
          
    end
          
          
    # Change "\\\\" to "\000" for convenience
          
    @text.gsub!(/\\\\/) { "\000" }
          
    # Change "\\C" to "\001" and "\\G" to "\002"
          
    @text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
          @
    text.gsub!(/\\[Gg]/) { "\002" }
          @
    text.gsub!(/\\[Cc]\[0x([0123456789abcdef]+)\]/) { "\026[#{$1}]" }
          
          
    # text skip code
          
    @text.gsub!(/\\[Ss][Kk][Ii][Pp]/) { "\003" }
          
          
    # ignore code
          
    @text.gsub!(/\\[Ii][Gg][Nn][Rr]/) { "\023" }
          
          
    # bold and italics
          
    @text.gsub!(/\\[Bb]/) { "\004" }
          @
    text.gsub!(/\\[Ii]/) { "\005" }
          
          
    # shadow
          
    @text.gsub!(/\\[Ss]/) { "\006" }
          
          
    # font
          
    @text.gsub!(/\\[Ff][Oo][Nn][Tt]\[(.*?)\]/) { "\007[#{$1}]" }
          
          
    # pause and wait
          
    @text.gsub!(/\\[Pp]\[([0-9]+)\]/) { "\010[#{$1}]" }
          @
    text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\011[#{$1}]" }
          
          
    # write speed
          
    @text.gsub!(/\\[Ww][Ss]\[([0-9]+)\]/) { "\013[#{$1}]" }
                
          
    # armor, items, skills, and weapons
          
    @text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) { 
            
    item = $data_armors[$1.to_i]
            
    "\014[#{$1}]" + "  " + item.name
          
    }
          @
    text.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) { 
            
    item = $data_items[$1.to_i]
            
    "\015[#{$1}]" + "  " + item.name
          
    }
          @
    text.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) { 
            
    item = $data_skills[$1.to_i]
            
    "\016[#{$1}]" + "  " + item.name
          
    }
          @
    text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) { 
            
    item = $data_weapons[$1.to_i]
            
    "\017[#{$1}]" + "  " + item.name
          
    }
          @
    text.gsub!(/\\[Ii][Cc]\[(.*?)\]/) { 
            
    "\027[#{$1}]"
          
    }
          
          
    # text justification
          
    @text.gsub!(/\\[Tt][Cc]/) { "\020" }
          @
    text.gsub!(/\\[Tt][Ll]/) { "\021" }
          @
    text.gsub!(/\\[Tt][Rr]/) { "\022" }
          
          
    # Resize the window to fit the contents?
          
    if @mode == FIT_WINDOW_TO_TEXT
            width 
    = 1
            text 
    = @text.split("\n")
            
    height = 0
            i 
    = 0
            
    for line in text
              
    # don't count this line's width if it has the ignr code
              
    if !line.include?("\023")
                
    width = [width, self.contents.text_size(line).width].max
                delta 
    = self.contents.text_size(line).height
                height 
    += delta + (6 * i) + 3
                
    if i < 3
                  i 
    += 1
                end
              end
            end
            
            
    if @face_graphic != "" and ($game_system.face_graphic_position == CENTER or $game_system.face_graphic_position == BOTTOM)
              
    width += @face.bitmap.width
              
    if height < @face.bitmap.height
                height 
    = @face.bitmap.height - 32
              end
            end
            
            
    if height == 0
              height 
    = 1
            end
             
            self
    .width = width + 48
            self
    .height = height + 48
            self
    .contents = Bitmap.new(width + 16, height)
            if 
    $game_system.font == ""
              
    self.contents.font.name = Font.default_name
            
    else
              
    self.contents.font.name = $game_system.font
            end
            
    if $game_system.font_color.nil?
              
    self.contents.font.color = normal_color
            
    else
              
    self.contents.font.color = $game_system.font_color
            end

          
    else
            if 
    self.width != $game_system.window_height or self.height != $game_system.window_width
              self
    .width = $game_system.window_width
              self
    .height = $game_system.window_height
              self
    .contents = Bitmap.new(self.width - 32, self.height - 32)
              if 
    $game_system.font == ""
                
    self.contents.font.name = Font.default_name
              
    else
                
    self.contents.font.name = $game_system.font
              end
              
    if $game_system.font_color.nil?
                
    self.contents.font.color = normal_color
              
    else
                
    self.contents.font.color = $game_system.font_color
              end
            end
          end
          
          reset_window
          
          get_x_value
          
          
    @count = Graphics.frame_count
          
    @pause_time = 0
          
    @ignore = false
          
    @done = false
          
    @face_frame = 0
        end
        
        
        
        
    # If number input
        
    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
      
    #--------------------------------------------------------------------------
      # * Set Window Position and Opacity Level
      #--------------------------------------------------------------------------
      
    def reset_window (change_opacity = true)
        
    # x-coordinate depends on justification
        
    if @message_event == -1
          
    if @justification == RIGHT
            self
    .x = 640 - self.width
          elsif 
    @justification == LEFT
            self
    .x = 0
          
    else # center
            
    self.x = (640 - self.width) / 2
          end
        
    else
          if @
    message_event == 0 or $game_map.events[@message_event] == nil
            
    # center on player
            
    event_x = $game_player.screen_x
          
    else
            
    # center on the event specified
            
    event_x = $game_map.events[@message_event].screen_x
          end
          self
    .x = event_x - self.width / 2
          
    @comic.x = self.x + (self.width / 2) + 4
        end
        
        
    if $game_temp.in_battle
          self
    .y = 16
        
    else
          if @
    message_event == -1
            
    case @message_position
              when 0  
    # up
                
    self.y = 16
              when 1  
    # middle
                
    self.y = (480 - self.height) / 2
              when 2  
    # down
                
    self.y = 480 - self.height - 24
            end
          
    else
            if @
    message_event == 0 or $game_map.events[@message_event] == nil
              
    # above player
              
    self.y = $game_player.screen_y - self.height - 48
            
    else
              
    # above event specified
              
    self.y = $game_map.events[@message_event].screen_y - self.height - 48
            end
            
    @comic.y = self.y + self.height - 2
          end
        end
        
    if self.y < 0 + (@name == "" ? 0 : 16)
          
    self.y = 0 + (@name == "" ? 0 : 16)
        
    elsif self.y > 480 - self.height 
          self
    .y = 480 - self.height
        end
        
    if self.x < 0 
          self
    .x = 0
        elsif self
    .x > 680 - self.width - 48
          self
    .x = 640 - self.width
        end
        
        
    if change_opacity
          
    if $game_system.message_frame == 0
            self
    .opacity = 255
          
    else
            
    self.opacity = 0
          end
          self
    .back_opacity = $game_system.back_opacity
        end
        
        
    # face stuff
          
    if @face_graphic != ""  
            
    # the player has chosen to show a face graphic
            
    if @done and $game_system.resting_face != ""
              
    @face.bitmap = RPG::Cache.picture(@face_graphic + $game_system.resting_face)
              if @
    face_frame * $game_system.face_frame_width >= @face.bitmap.width
                
    @face_frame = 0
              end
            
    else
              @
    face.bitmap = RPG::Cache.picture(@face_graphic)
            
    end
            
            
    # picture y-coordinate
            
    if @face_graphic_position == ABOVE
              
    @face.y = self.y - @face.bitmap.height
              
    @face_offset = 0
            elsif 
    @face_graphic_position == CENTER
              delta 
    = (@face.bitmap.height - self.height) / 2
              
    @face.y = self.y - delta
              
    if $game_system.animated_faces
                
    @face_offset = $game_system.face_frame_width + 16
              
    else
                @
    face_offset = @face.bitmap.width + 16
              end
            elsif 
    @face_graphic_position == BOTTOM 
              
    @face.y = self.y + self.height - @face.bitmap.height
              
    if $game_system.animated_faces
                
    @face_offset = $game_system.face_frame_width + 16
              
    else
                @
    face_offset = @face.bitmap.width + 16
              end
            
    else # side
              
    delta = (@face.bitmap.height - self.height) / 2
              
    @face.y = self.y - delta
              
    @face_offset = 0
            end
            
            
    # picture x-coordinate
            
    if @face_graphic_justification == LEFT
              
    if @face_graphic_position == SIDE
                
    @face.x = self.x - @face.bitmap.width
              
    else
                @
    face.x = self.x + 10
              end
            
    else
              if 
    $game_system.animated_faces
                offset 
    = @face.bitmap.width - $game_system.face_frame_width
              
    else
                
    offset = 0
              end
              
    if @face_graphic_position == SIDE
                
    @face.x = self.x + self.width + offset
              
    else
                @
    face.x = self.x + self.width - @face.bitmap.width - 10 + offset
                
    @face_offset = 0
              end
            end
            
            
    if $game_system.animated_faces
              
    @face.src_rect = Rect.new(@face_frame * $game_system.face_frame_width, 0, $game_system.face_frame_width, @face.bitmap.height)
              if @
    done and $game_system.resting_face != ""
                
    pause = $game_system.resting_animation_pause
              
    else
                
    pause = $game_system.animation_pause
              end
              
    if Graphics.frame_count % pause == 0
                
    @animate_face = true
              end
              
    if @animate_face
                
    if Graphics.frame_count % 3 == 0
                  
    @face_frame += 1
                  
    if @face_frame * $game_system.face_frame_width >= @face.bitmap.width
                    
    @face_frame = 0
                    
    @animate_face = false
                  end
                end
              end
            end
          end
          
          
    # name window
          
    if @name != "" and @name != nil
            
    @name_window.set_name(@name)
            @
    name_window.x = self.x
            
    @name_window.y = self.y - 36
          end
          
          
    # If choice
        
    if $game_temp.choice_max > 0
          
    @choice_window.set_choices($game_temp.choices)
          
    # determine x and y coords for choice window
          
    if $game_system.choice_justification == LEFT
            
    @choice_window.x = self.x
          
    else
            @
    choice_window.x = self.x + self.width - @choice_window.width
          end
          
    if $game_system.choice_position == ABOVE
            
    # check to make sure there is enough room above the textbox
            
    if self.y < @choice_window.height
              
    # not enough room above, place below
              
    @choice_window.y = self.y + self.height
            
    else
              
    # draw above
              
    @choice_window.y = self.y - @choice_window.height
            end
          elsif $game_system
    .choice_position == BOTTOM
            
    # check to make sure there is enough room below the textbox
            
    if (480 - self.y - self.height) < @choice_window.height
              
    # not enough room below, place above
              
    @choice_window.y = self.y - @choice_window.height
            
    else
              
    # draw below 
              
    @choice_window.y = self.y + self.height
            end
          
    else # side
            
    if $game_system.choice_justification == LEFT
              
    # check to make sure there's room on the left side
              
    if self.y < @choice_window.width
                
    # not enough room on the side, check to make sure there's room below
                
    if (480 - self.y - self.height) < @choice_window.height
                  
    # not enough room below, place above
                  
    @choice_window.y = self.y - @choice_window.height
                
    else
                  
    # draw below 
                  
    @choice_window.y = self.y + self.height
                end
              
    else
                
    # place on the left side
                
    @choice_window.y = self.y
                
    @choice_window.x = self.x - @choice_window.width
              end
            
    else # right
              # check to make sure there's room on the right side
              
    if (680 - (self.y + self.width)) < @choice_window.width
                
    # not enough room on the side, check to make sure there's room below
                
    if (480 - self.y - self.height) < @choice_window.height
                  
    # not enough room below, place above
                  
    @choice_window.y = self.y - @choice_window.height
                
    else
                  
    # draw below 
                  
    @choice_window.y = self.y + self.height
                end
              
    else
                
    # place on the left side
                
    @choice_window.y = self.y
                
    @choice_window.x = self.x + self.width
              end
            end
          end
        end
      end
      
    #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      
    def update
        super
        
        
    if !@show
          
    return
        else
          
    self.visible = true
          
    if @face_graphic != ""
            
    @face.opacity = 255
          end
          
    if $game_system.comic_enabled and @message_event != -1
            
    @comic.opacity = 255
          end
          
    if @name != ""
            
    @name_window.visible = true
            
    if $game_system.name_window
              
    @name_window.dummy_window.visible = true
            end
          end
          
    if @input_number_window != nil
            
    @input_number_window.contents_opacity = 255
          end
          reset_window
        end
        
        
        
    if (@contents_showing and $game_system.message_event != -1 and @shake == 0) or $game_system.animated_faces
          reset_window
    (false)
        
    end
        
        
    if $game_system.shake != 0  # shake the window
          
    if @ascending
            
    if @target_x != self.x
              self
    .x += 1
            
    else
              @
    ascending = false
              
    @target_x = self.x - ($game_system.shake * 2)
            
    end
          
    else 
            if @
    target_x != self.x
              self
    .x -= 1
            
    else
              @
    ascending = true
              
    @target_x = self.x + ($game_system.shake * 2)
            
    end
          end
        end
        
        
    if $game_system.text_shake != 0  # shake the text
          
    if @ascending
            
    if @target_x2 != @shake_sprite.x
              
    @shake_sprite.x += 1
            
    else
              @
    ascending = false
              
    @target_x2 = @shake_sprite.x - ($game_system.text_shake * 2)
            
    end
          
    else 
            if @
    target_x2 != @shake_sprite.x
              
    @shake_sprite.x -= 1
            
    else
              @
    ascending = true
              
    @target_x2 = @shake_sprite.x + ($game_system.text_shake * 2)
            
    end
          end
        end
        
        
    if @wait > 0
          
    @wait -= 1
          
    if @wait == 0
            terminate_message
            
    return
          
    end
        end
        
        
    # If fade in
        
    if @fade_in
          self
    .contents_opacity += 24
          
    if @face_graphic != ""
            
    @face.opacity += 24
          end
          
    if $game_system.comic_enabled and @message_event != -1
            
    @comic.opacity += 24
          end
          
    if @name != ""
            
    @name_window.visible = true
          end
          
    if @input_number_window != nil
            
    @input_number_window.contents_opacity += 24
          end
          
    if self.contents_opacity == 255
            
    @fade_in = false
          end
          
    return
        
    end
        
        
    # write the text
        
    if @text != nil and @text != ""
          
    speed = $game_system.write_speed
          
    if $game_system.text_skip
            
    if $game_system.skip_mode == WRITE_FASTER and Input.press?(Input::C)
              
    # the player is holding the action button, write faster
              
    speed /= 3
            elsif $game_system
    .skip_mode == WRITE_ALL and @write_all
              
    # the player pressed the action button, write all the text
              
    while (c = @text.slice!(/./m)) != nil
                write_char
    (c)
              
    end
              
    return
            
    end
          end
          
    while @ignore
            c 
    = @text.slice!(/./m)
            if 
    c != nil
              write_char
    (c)
            
    end
          end
          
    if @pause_time > 0
            
    @pause_time -= 1
            
    return
          
    end
          
    if Graphics.frame_count - @count >= speed
            
    if $game_system.sound_effect != ""
              
    Audio.se_play("Audio/SE/" + $game_system.sound_effect, 80, 100)
            
    end
            
    @count = Graphics.frame_count
            c 
    = @text.slice!(/./m)
            if 
    c != nil
              write_char
    (c)
            
    end
          end
          
    return
        
    end
        
        
    @done = true
        
        
    # If inputting number
        
    if @input_number_window != nil
          
    @input_number_window.update
          
    # Confirm
          
    if Input.trigger?(Input::C)
            
    $game_system.se_play($data_system.decision_se)
            
    $game_variables[$game_temp.num_input_variable_id] =
              @
    input_number_window.number
            $game_map
    .need_refresh = true
            
    # Dispose of number input window
            
    @input_number_window.dispose
            
    @input_number_window = nil
            terminate_message
          end
          
    return
        
    end
        
        
    if @wait != 0
          
    return
        
    end
        
        
    # If message is being displayed and contents are all written
        
    if @contents_showing
          
    # if choice
          
    if $game_temp.choice_max > 0
            
    if !@choice_window.active
              
    @choice_window.visible = true
              
    @choice_window.active = true
              
    @choice_window.index = 0
            end
            
    @choice_window.update
          
    else
            
    # If choice isn't being displayed, show pause sign
            
    self.pause = true
          end
          
    return
        
    end
      end
      
      
    #--------------------------------------------------------------------------
      # * Process and write the given character
      #--------------------------------------------------------------------------
      
    def write_char(c)
        if 
    c == "\000"
          
    # Return to original text
          
    c = "\\"
        
    end
        
    # If \C[n]
        
    if c == "\001"
        
    # Change text color
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    color = $1.to_i
          
    if color >= 0 and color <= 7
            self
    .contents.font.color = text_color(color)
          
    end
          
    # go to next text
          
    return
        
    end
        
    # If \G
        
    if c == "\002"
          
    # Make gold window
          
    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
          
    # go to next text
          
    return
        
    end
        
    # If \skip
        
    if c == "\003"
          
    # toggle text skipping
          #$game_system.text_skip = !$game_system.text_skip
          # go to next text
          
    return
        
    end
        
    # If \b
        
    if c == "\004"
          
    # toggle bold
          
    self.contents.font.bold = !self.contents.font.bold
          
    # go to next text
          
    return
        
    end
        
    # If \i
        
    if c == "\005"
          
    # toggle italics
          
    self.contents.font.italic = !self.contents.font.italic
          
    # go to next text
          
    return
        
    end
        
    # If \s
        
    if c == "\006"
          
    # toggle shadow
          #$game_system.shadowed_text = !$game_system.shadowed_text
          # go to next text
          
    return
        
    end
        
    # If \font
        
    if c == "\007"
          
    # change font
          
    @text.sub!(/\[(.*?)\]/, "")
          
    font = $1.to_s
          
    @font = font
          
    if font == ""
            
    self.contents.font.name = Font.default_name
          
    else
            
    self.contents.font.name = font
          end
          
    # go to next text
          
    return
        
    end
        
    # If \p[n]
        
    if c == "\010"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          @
    pause_time = $1.to_i

          
    # go to next text
          
    return
        
    end
        
        
    # If \w[n]
        
    if c == "\011"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          @
    wait = $1.to_i

          
    # go to next text
          
    return
        
    end
        
        
    # If \ws[n]
        
    if c == "\013"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    $game_system.write_speed = $1.to_i

          
    # go to next text
          
    return
        
    end 
        
    # If \oa[n]
        
    if c == "\014"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_armors[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \oi[n]
        
    if c == "\015"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_items[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \os[n]
        
    if c == "\016"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_skills[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \ow[n]
        
    if c == "\017"
          
    @text.sub!(/\[([0-9]+)\]/, "")
          
    index = $1.to_i
          
    @text.sub!("  ", "")
          
    item = $data_weapons[index]
          
    # draw the icon
          
    icon = RPG::Cache.icon(item.icon_name)
          
    self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24
          
          
    # go to next text
          
    return
        
    end
        
    # If \ic[name]
        
    if c == "\027"
          
    @text.sub!(/\[(.*?)\]/, "")
          
    # draw the icon
          
    icon = RPG::Cache.icon($1.to_s)
          
    line = self.contents.text_size("dj").height
          self
    .contents.blt(@x + 4, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))
          @
    x += 24

          
    # go to next text
          
    return
        
    end
        
        
    # If \tc
        
    if c == "\020"
          
    # center justify
          
    @text_justification = CENTER
          get_x_value
          
    # go to next text
          
    return
        
    end
        
        
    # If \tl
        
    if c == "\021"
          
    # left justify
          
    @text_justification = LEFT
          get_x_value
          
    # go to next text
          
    return
        
    end
        
        
    # If \tr
        
    if c == "\022"
          
    # right justify
          
    @text_justification = RIGHT
          get_x_value
          
    # go to next text
          
    return
        
    end
        
        
    # If \ignr
        
    if c == "\023"
          
    # set ignore flage
          
    @ignore = true
          
    # go to next text
          
    return
        
    end
        
        
    # if \c (hex color)
        
    if c == "\026"
          
    # convert hex color to RGB
          
    @text.sub!(/\[([0123456789abcdef]+)\]/, "")
          
    hex_code = $1.to_s
         
          red   
    = ("0x" + hex_code.slice(0..1)).hex
          blue  
    = ("0x" + hex_code.slice(2..3)).hex
          green 
    = ("0x" + hex_code.slice(4..5)).hex
          
          self
    .contents.font.color = Color.new(red, blue, green)
          return
        
    end
        
        
    # if \sk[i] (begin shake)
        
    if c == "\030"
          
    @shake_text = true
          
    return
        
    end
        
    # if \sk (end shake)
        
    if c == "\031"
          
    @shake_text = false
          
    return
        
    end
        
        
    # If new line text
        
    if c == "\n"
          
    # Add 1 to y
          
    if !@ignore
            
    @y += 1
          end
          
    if @text != ""
            
    get_x_value
          end
          
    @ignore = false

          
    # go to next text
          
    return
        
    end
        
    if @ignore
          
    return
        
    end
        
    # Draw text
        
    line = self.contents.text_size("dj").height
        
    if $game_system.shadowed_text
          old_color 
    = self.contents.font.color.clone
          if @
    shake_text
            
    @shake_sprite.bitmap.font.color = $game_system.shadow_color     
            
    @shake_sprite.bitmap.draw_text(6 + @x, line * @y + 2, 40, 32, c)
            @
    shake_sprite.bitmap.font.color = old_color
          
    else
            
    self.contents.font.color = $game_system.shadow_color     
            self
    .contents.draw_text(6 + @x, line * @y + 2, 40, 32, c)
            
    self.contents.font.color = old_color
          end
        end
        
    if @shake_text
          
    @shake_sprite.bitmap.draw_text(4 + @x, line * @y, 40, 32, c)
        else
          
    self.contents.draw_text(4 + @x, line * @y, 40, 32, c)
        
    end
        
    # Add x to drawn text width
        
    @x += self.contents.text_size(c).width
      end
      
      def get_x_value
        
    # text justification - offset for first line
        
    if @text_justification == CENTER
          
    # get the length of the current line
          
    w = self.contents.text_size(@text.split("\n")[0]).width
          
    @x = (self.width - w - 48) / 2
        elsif 
    @text_justification == RIGHT
          
    # get the length of the current line
          
    w = self.contents.text_size(@text.split("\n")[0]).width
          
    @x = self.width - w - 48
        
    else # left
          
    if @face_graphic == ""
            
    @x = 0
          
    else
            @
    x = @face_offset
          end
        end
      end
    end

    #==============================================================================
    # ** Window_InputNumber
    #------------------------------------------------------------------------------
    #  This window is for inputting numbers, and is used within the
    #  message window.
    #==============================================================================

    class Window_InputNumber < Window_Base
      
    #--------------------------------------------------------------------------
      # * Object Initialization
      #     digits_max : digit count
      #--------------------------------------------------------------------------
      
    def initialize(digits_max)
        @
    digits_max = digits_max
        
    @number = 0
        
    # Calculate cursor width from number width (0-9 equal width and postulate)
        
    dummy_bitmap = Bitmap.new(32, 32)
        @
    cursor_width = dummy_bitmap.text_size("0").width + 8
        dummy_bitmap
    .dispose
        super
    (0, 0, @cursor_width * @digits_max + 32, 64)
        
    self.contents = Bitmap.new(width - 32, height - 32)
        if 
    $game_system.font == ""
          
    self.contents.font.name = Font.default_name
        
    else
          
    self.contents.font.name = $game_system.font
        end
        self
    .z += 9999
        self
    .opacity = $game_system.opacity
        self
    .back_opacity = $game_system.back_opacity
        
    @index = 0
        refresh
        update_cursor_rect
      end
      
      
    #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      
    def refresh
        self
    .contents.clear
        
    if $game_system.font_color.nil?
          
    self.contents.font.color = normal_color
        
    else
          
    self.contents.font.color = $game_system.font_color
        end
        
    if $game_system.windowskin != ""  
          
    self.windowskin = RPG::Cache.windowskin($game_system.windowskin)
        else
          
    self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)
        
    end
        s 
    = sprintf("%0*d", @digits_max, @number)
        for 
    i in 0...@digits_max
          
    # Draw text
          
    if $game_system.shadowed_text
            old_color 
    = self.contents.font.color.clone
            
    self.contents.font.color = $game_system.shadow_color
            self
    .contents.draw_text(i * @cursor_width + 6, 2, 32, 32, s[i,1])
            
    self.contents.font.color = old_color
          end
          self
    .contents.draw_text(i * @cursor_width + 4, 0, 32, 32, s[i,1])
        
    end
      end
    end 
    Последний раз редактировалось Andrew; 27.03.2012 в 11:57.


  3. #3

    По умолчанию



    Вот такая ошибка вылезла, когда я запустил тест игры.... Какого-то файла не хватает! Я правильно понял, что он должен был быть в том архиве, на который ссылка не работает? Может выложишь его?

  4. #4
    Бывалый Аватар для ViRSneG
    Информация о пользователе
    Регистрация
    08.09.2010
    Адрес
    П.-Камчатский
    Сообщений
    620
    Записей в дневнике
    2
    Репутация: 25 Добавить или отнять репутацию

    По умолчанию

    вставь в папку Graphics/Windowskins/ пустые изображения в 1х1 пиксель и назови их talk1.png , talk2.png, thought.png

    Но одно могу сказать точно: я ничего не могу сказать точно!
    Спойлер Страх мейкериста:
    [18:42] ReDS: куча паралельных ивентов и скриптовая ошибка посреди проекта

  5. #5
    Хранитель Аватар для Inca
    Информация о пользователе
    Регистрация
    28.04.2008
    Адрес
    Тауантинсуйя. Лима.
    Сообщений
    2,402
    Записей в дневнике
    9
    Репутация: 70 Добавить или отнять репутацию

    По умолчанию

    Господи... Вот тебе ссылка на демку скрипта. Правда, там не руссифицированная мефисом версия, но по крайней мере есть все необходимые графический файлы типа talk1.png , talk2.png, thought.png.

  6. #6

    По умолчанию

    Andrew, ViRSneG, Inca - большое спасибо, уже кое что! Только остаётся проблема: шрифт меняется только в сообщениях, а в меню, заставке и бою он остаётся обычным. Ну, и с тенями тоже проблема никак не решается. Что делать? В этом скрипте как то проблема решается?

  7. #7
    Бывалый Аватар для Inkognitoo
    Информация о пользователе
    Регистрация
    30.09.2008
    Адрес
    Пермь.
    Сообщений
    988
    Записей в дневнике
    4
    Репутация: 16 Добавить или отнять репутацию

    По умолчанию

    Создай сначала - каркас, коробку. А потом уже разрисовывай и украшай ее.

  8. #8
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    А, ну тогда нужно переопределять Bitmap.draw_text или как он там. А нет. Выложи Windows_Base плиз(у меня нет хр).


  9. #9

    По умолчанию

    А это что и откуда? Я не нашёл ничего похожего вообще. Не знал, что заменить шрифт так трудно!

  10. #10

    По умолчанию

    А! Допёрло! Это скрипты! Вот тогда:

    Window_Base

    PHP код:
    class Window_Base < Window
      
    #--------------------------------------------------------------------------
      
    def initialize(x, y, width, height)
        
    super()
        @
    windowskin_name = $game_system.windowskin_name
        self
    .windowskin = RPG::Cache.windowskin(@windowskin_name)
        
    self.x = x
        self
    .y = y
        self
    .width = width
        self
    .height = height
        self
    .z = 100
      end
      
    #--------------------------------------------------------------------------
      
    def dispose
        
    if self.contents != nil
          self
    .contents.dispose
        end
        super
      end
      
    #--------------------------------------------------------------------------
      
    def text_color(n)
        case 
    n
        when 0
          
    return Color.new(255, 255, 255, 255)
        
    when 1
          
    return Color.new(128, 128, 255, 255)
        
    when 2
          
    return Color.new(255, 128, 128, 255)
        
    when 3
          
    return Color.new(128, 255, 128, 255)
        
    when 4
          
    return Color.new(128, 255, 255, 255)
        
    when 5
          
    return Color.new(255, 128, 255, 255)
        
    when 6
          
    return Color.new(255, 255, 128, 255)
        
    when 7
          
    return Color.new(192, 192, 192, 255)
        else
          
    normal_color
        end
      end
      
    #--------------------------------------------------------------------------
      
    def up_color
        
    return Color.new(74, 210, 74)
      
    end
      
    #--------------------------------------------------------------------------
      
    def down_color
        
    return Color.new(170, 170, 170)
      
    end
      
    #--------------------------------------------------------------------------
      
    def normal_color
        
    return Color.new(255, 255, 255, 255)
      
    end
      
    #--------------------------------------------------------------------------
      
    def disabled_color
        
    return Color.new(255, 255, 255, 128)
      
    end
      
    #--------------------------------------------------------------------------
      
    def system_color
        
    return Color.new(192, 224, 255, 255)
      
    end
      
    #--------------------------------------------------------------------------
      
    def crisis_color
        
    return Color.new(255, 255, 64, 255)
      
    end
      
    #--------------------------------------------------------------------------
      
    def knockout_color
        
    return Color.new(255, 64, 0)
      
    end
      
    #--------------------------------------------------------------------------
      
    def up_color
        
    return Color.new(74, 210, 74)
      
    end
      
    #--------------------------------------------------------------------------
      
    def down_color
        
    return Color.new(170, 170, 170)
      
    end
      
    #--------------------------------------------------------------------------
      
    def update
        super
        
    if $game_system.windowskin_name != @windowskin_name
          
    @windowskin_name = $game_system.windowskin_name
          self
    .windowskin = RPG::Cache.windowskin(@windowskin_name)
        
    end
      end
      
    #--------------------------------------------------------------------------
      
    def draw_actor_graphic(actor, x, y)
        
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
        
    cw = bitmap.width / 4
        ch 
    = bitmap.height / 4
        src_rect 
    = Rect.new(0, 0, cw, ch)
        
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
      
    end
      
    #--------------------------------------------------------------------------
      
    def draw_actor_name(actor, x, y)
        
    self.contents.font.color = normal_color
        self
    .contents.draw_text(x, y, 120, 32, actor.name)
      
    end
      
    #--------------------------------------------------------------------------
      
    def draw_actor_class(actor, x, y)
        
    self.contents.font.color = normal_color
        self
    .contents.draw_text(x, y, 236, 32, actor.class_name)
      
    end
      
    #--------------------------------------------------------------------------
      
    def draw_actor_level(actor, x, y)
        
    self.contents.font.color = system_color
        self
    .contents.draw_text(x, y, 32, 32, $str_level)
        
    self.contents.font.color = normal_color
        self
    .contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
      
    end
      
    #--------------------------------------------------------------------------
      
    def make_battler_state_text(battler, width, need_normal)
        
    brackets_width = self.contents.text_size("[]").width
        text 
    = ""
        
    for i in battler.states
          
    if $data_states[i].rating >= 1
            
    if text == ""
              
    text = $data_states[i].name
            
    else
              
    new_text = text + "/" + $data_states[i].name
              text_width 
    = self.contents.text_size(new_text).width
              
    if text_width > width - brackets_width
                
    break
              
    end
              text 
    = new_text
            end
          end
        end
        
    if text == ""
          
    if need_normal
            text 
    = "[" + $str_normal + "]"
          
    end
        
    else
          
    text = "[" + text + "]"
        
    end
        
    return text
      end
      
    #--------------------------------------------------------------------------
      
    def draw_actor_state(actor, x, y, width = 120)
        
    text = make_battler_state_text(actor, width, true)
        
    self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
        self
    .contents.draw_text(x, y, width, 32, text)
      
    end
      
    #--------------------------------------------------------------------------
      
    def draw_actor_exp(actor, x, y)
        
    self.contents.font.color = system_color
        self
    .contents.draw_text(x, y, 32, 32, $str_e)
        
    self.contents.font.color = normal_color
        self
    .contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
        
    self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
        
    self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
      
    end
      
    #--------------------------------------------------------------------------
      
    def draw_actor_hp(actor, x, y, width = 144)
        
    self.contents.font.color = system_color
        self
    .contents.draw_text(x, y, 32, 32, $data_system.words.hp)
        if 
    width - 32 >= 108
          hp_x 
    = x + width - 108
          flag 
    = true
        elsif width 
    - 32 >= 48
          hp_x 
    = x + width - 48
          flag 
    = false
        end
        self
    .contents.font.color = actor.hp == 0 ? knockout_color :
          
    actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
        self
    .contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
        if 
    flag
          self
    .contents.font.color = normal_color
          self
    .contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
          
    self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
        
    end
      end
      
    #--------------------------------------------------------------------------
      
    def draw_actor_sp(actor, x, y, width = 144)
        
    self.contents.font.color = system_color
        self
    .contents.draw_text(x, y, 32, 32, $data_system.words.sp)
        if 
    width - 32 >= 108
          sp_x 
    = x + width - 108
          flag 
    = true
        elsif width 
    - 32 >= 48
          sp_x 
    = x + width - 48
          flag 
    = false
        end
        self
    .contents.font.color = actor.sp == 0 ? knockout_color :
          
    actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
        self
    .contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
        if 
    flag
          self
    .contents.font.color = normal_color
          self
    .contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
          
    self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
        
    end
      end
      
    #--------------------------------------------------------------------------
      
    def draw_actor_parameter(actor, x, y, type)
        case 
    type
        when 0
          parameter_name 
    = $data_system.words.atk
          parameter_value 
    = actor.atk
        when 1
          parameter_name 
    = $data_system.words.pdef
          parameter_value 
    = actor.pdef
        when 2
          parameter_name 
    = $data_system.words.mdef
          parameter_value 
    = actor.mdef
        when 3
          parameter_name 
    = $data_system.words.str
          parameter_value 
    = actor.str
        when 4
          parameter_name 
    = $data_system.words.dex
          parameter_value 
    = actor.dex
        when 5
          parameter_name 
    = $data_system.words.agi
          parameter_value 
    = actor.agi
        when 6
          parameter_name 
    = $data_system.words.int
          parameter_value 
    = actor.int
        end
        self
    .contents.font.color = system_color
        self
    .contents.draw_text(x, y, 120, 32, parameter_name)
        
    self.contents.font.color = normal_color
        self
    .contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
      
    end
      
    #--------------------------------------------------------------------------
      
    def draw_item_name(item, x, y)
        if 
    item == nil
          
    return
        
    end
        bitmap 
    = RPG::Cache.icon(item.icon_name)
        
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
        
    self.contents.font.color = normal_color
        self
    .contents.draw_text(x + 28, y, 212, 32, item.name)
      
    end
    end 

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Жирный Шрифт!