Jump to content
Rpg²S Forum

Beccacorvo

Utenti
  • Posts

    125
  • Joined

  • Last visited

Posts posted by Beccacorvo

  1. Non fanno impazzire neanche a me quelle scritte, le ho usate per dare l'idea che quella caverna fosse usate da umani per rituali magici o roba simile.

    I fuochi sono una trappola che serve a bloccare il giocatore, sono un incantesimo lanciato dalla strega.Il pg sara mosso fino al centro e poi i fuochi si attivano, per poi sparire dopo un dialogo

  2. Sono riuscito a creare gli scontri come volevo. E come dice gardian ma, anziche usare eventi vuoti come blocchi gli ho resi interruttori che cambiano il movimento dei mostri da casuale a verso il giocatore.

    Capito il classico mostro a zona che ti segue bloccato da eventi. Ottima cosa, altrimenti se ti seguono sempre viene un casino di mostri che si bloccano tra loro! XD

    Quindi farai solo delle ampie regioni con i mostri o comunque saranno distribuite nelle varie parti del dungeon? Lo chiedo perché parli sempre di area principale...

    ^ ^

    Visto che la mappa dungeon non è poi cosi grossa ci saranno 3 macro zone (uno poco dopo la stanza di ingresso, una nel nodo centrale e una nella galleria di sinistra) intervallate da 'zone sicure'. La zone dell'enigma sarà libera da mostri.

    Questo dungeon non sarà ripetibile dal giocatore quindi se anche affronta qualche scontro male non fa.

     

    A quando una nuova Demo? :happy:

    Una volta concluso il mapping di questo dungeon dovrò sviluppare gli eventi della storia, i mostri, ecc. Dopo questo rivedrò i combattimenti nel bosco e poi rilascerò la demo che comunque sarà uguale dal punto di vista narrattivo e non prevederà queste nuove mappe (a parte quella del ponte in manutenzione).

    Infatti gli eventi che si svolgeranno in questa città porteranno la storia a circa 2/3 del totale. Prevedo un'altra grossa città più due luoghi minori.

    Se poi riuscirò a finire il progetto e il gioco vi piacerà ho già in mente un secondo capitolo. La storia che ho in testa è autoconclusiva ma, lascia spazio a un sequel.

     

    EDIT:

    Oggi ho realizzato anche l'interno della chiesetta, la porta conduce alla cripta che a sua volta conduce al dungeon

     

    http://i57.tinypic.com/2uf3cb6.jpg

     

  3. La parte sud non piace molto neanche a me. Avevo provato a farla a livello come quella nord ma l'effetto non mi piace. La parte più a sud risulta più bassa rispetto a quella sopra, io vorrei l'effetto opposto.

     

    Cosa intendo con calcolare gli spazi per gli npc? In questo dungeon li metterò solo sulla mappa principale

  4. Penultima mappa del dungeon

     

    http://i58.tinypic.com/f1du8p.jpg

     

    Ora mi resta da creare una stanza naturale in cui far avvenire l'evento principale di questa parte del gioco. Deve essere una stanza abbastanza ambia e antica in cui i maghi facevano esperimenti di evocazione demoniaca. Avete qualche suggerimento?

  5. So che è monotona la cripta ma alla fine essendo un'opera umana ci può anche stare e ho sistemato le porte. In realtà le statue erano messe bene erano le porte ad essere avanti di un tile

    lo script ha funzionato sempre bene fino a questo momento, il fatto è che da problemi anche nella mappa successiva.

    ecco qui un paio di screen.

     

    http://i62.tinypic.com/2i102t4.jpg
    http://i57.tinypic.com/25f4qpv.jpg

     

    Credo che ci sia un conflitto con qualche evento della mappa perché se metto la posizione di inizio del giocatore oltre l'enigma (e quindi salto gli eventi), i testi si leggono bene.

    e qui metto lo script

     

    #==============================================================================
    #
    # ▼ Yanfly Engine Ace - Ace Message System v1.05
    # -- Last Updated: 2012.01.13
    # -- Level: Normal
    # -- Requires: n/a
    #
    #==============================================================================

    $imported = {} if $imported.nil?
    $imported["YEA-MessageSystem"] = true

    #==============================================================================
    # ▼ Updates
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # 2012.07.21 - Fixed REGEXP error at line 824
    # 2012.01.13 - Bug Fixed: Negative tags didn't display other party members.
    # 2012.01.12 - Compatibility Update: Message Actor Codes
    # 2012.01.10 - Added Feature: \pic[x] text code.
    # 2012.01.04 - Bug Fixed: \ic tag was \ii. No longer the case.
    # - Added: Scroll Text window now uses message window font.
    # 2011.12.31 - Started Script and Finished.
    #
    #==============================================================================
    # ▼ Introduction
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # While RPG Maker VX Ace certainly improved the message system a whole lot, it
    # wouldn't hurt to add in a few more features, such as name windows, converting
    # textcodes to write out the icons and/or names of items, weapons, armours, and
    # more in quicker fashion. This script also gives the developer the ability to
    # adjust the size of the message window during the game, give it a separate
    # font, and to give the player a text fast-forward feature.
    #
    #==============================================================================
    # ▼ Instructions
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # To install this script, open up your script editor and copy/paste this script
    # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
    #
    # -----------------------------------------------------------------------------
    # Message Window text Codes - These go inside of your message window.
    # -----------------------------------------------------------------------------
    # Default: Effect:
    # \v[x] - Writes variable x's value.
    # \n[x] - Writes actor x's name.
    # \p[x] - Writes party member x's name.
    # \g - Writes gold currency name.
    # \c[x] - Changes the colour of the text to x.
    # \i[x] - Draws icon x at position of the text.
    # \{ - Makes text bigger by 8 points.
    # \} - Makes text smaller by 8 points.
    # \$ - Opens gold window.
    # \. - Waits 15 frames (quarter second).
    # \| - Waits 60 frames (a full second).
    # \! - Waits until key is pressed.
    # \> - Following text is instant.
    # \< - Following text is no longer instant.
    # \^ - Skips to the next message.
    # \\ - Writes a "\" in the window.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # Wait: Effect:
    # \w[x] - Waits x frames (60 frames = 1 second). Message window only.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # NameWindow: Effect:
    # \n - Creates a name box with x string. Left side. *Note
    # \nc - Creates a name box with x string. Centered. *Note
    # \nr - Creates a name box with x string. Right side. *Note
    #
    # *Note: Works for message window only.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # Position: Effect:
    # \px[x] - Sets x position of text to x.
    # \py[x] - Sets y position of text to y.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # Picture: Effect:
    # \pic[x] - Draws picture x from the Graphics\Pictures folder.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # Outline: Effect:
    # \oc[x] - Sets outline colour to x.
    # \oo[x] - Sets outline opacity to x.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # Font: Effect:
    # \fr - Resets all font changes.
    # \fz[x] - Changes font size to x.
    # \fn[x] - Changes font name to x.
    # \fb - Toggles font boldness.
    # \fi - Toggles font italic.
    # \fo - Toggles font outline.
    # \fs - Toggles font shadow.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # Actor: Effect:
    # \af[x] - Shows face of actor x. *Note
    # \ac[x] - Writes out actor's class name. *Note
    # \as[x] - Writes out actor's subclass name. Req: Class System. *Note
    # \an[x] - Writes out actor's nickname. *Note
    #
    # *Note: If x is 0 or negative, it will show the respective
    # party member's face instead.
    # 0 - Party Leader
    # -1 - 1st non-leader member.
    # -2 - 2nd non-leader member. So on.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # Names: Effect:
    # \nc[x] - Writes out class x's name.
    # \ni[x] - Writes out item x's name.
    # \nw[x] - Writes out weapon x's name.
    # \na[x] - Writes out armour x's name.
    # \ns[x] - Writes out skill x's name.
    # \nt[x] - Writes out state x's name.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # Icon Names: Effect:
    # \ic[x] - Writes out class x's name including icon. *
    # \ii[x] - Writes out item x's name including icon.
    # \iw[x] - Writes out weapon x's name including icon.
    # \ia[x] - Writes out armour x's name including icon.
    # \is[x] - Writes out skill x's name including icon.
    # \it[x] - Writes out state x's name including icon.
    #
    # *Note: Requires YEA - Class System
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # And those are the text codes added with this script. Keep in mind that some
    # of these text codes only work for the Message Window. Otherwise, they'll work
    # for help descriptions, actor biographies, and others.
    #
    #==============================================================================
    # ▼ Compatibility
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
    # it will run with RPG Maker VX without adjusting.
    #
    #==============================================================================

    module YEA
    module MESSAGE

    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - General Message Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # The following below will adjust the basic settings and that will affect
    # the majority of the script. Adjust them as you see fit.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # This button is the button used to make message windows instantly skip
    # forward. Hold down for the effect. Note that when held down, this will
    # speed up the messages, but still wait for the pauses. However, it will
    # automatically go to the next page when prompted.
    TEXT_SKIP = :A # Input::A is the shift button on keyboard.

    # This variable adjusts the number of visible rows shown in the message
    # window. If you do not wish to use this feature, set this constant to 0.
    # If the row value is 0 or below, it will automatically default to 4 rows.
    VARIABLE_ROWS = 21

    # This variable adjusts the width of the message window shown. If you do
    # not wish to use this feature, set this constant to 0. If the width value
    # is 0 or below, it will automatically default to the screen width.
    VARIABLE_WIDTH = 22

    # This is the amount of space that the message window will indent whenever
    # a face is used. Default: 112
    FACE_INDENT_X = 112

    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Name Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # The name window is a window that appears outside of the main message
    # window box to display whatever text is placed inside of it like a name.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    NAME_WINDOW_X_BUFFER = -20 # Buffer x position of the name window.
    NAME_WINDOW_Y_BUFFER = 0 # Buffer y position of the name window.
    NAME_WINDOW_PADDING = 20 # Padding added to the horizontal position.
    NAME_WINDOW_OPACITY = 255 # Opacity of the name window.
    NAME_WINDOW_COLOUR = 6 # Text colour used by default for names.

    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Message Font Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # Ace Message System separates the in-game system font form the message
    # font. Adjust the settings here for your fonts.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # This array constant determines the fonts used. If the first font does not
    # exist on the player's computer, the next font in question will be used
    # in place instead and so on.
    MESSAGE_WINDOW_FONT_NAME = ["Verdana", "Arial", "Courier New"]

    # These adjust the other settings regarding the way the game font appears
    # including the font size, whether or not the font is bolded by default,
    # italic by default, etc.
    MESSAGE_WINDOW_FONT_SIZE = 24 # Font size.
    MESSAGE_WINDOW_FONT_BOLD = false # Default bold?
    MESSAGE_WINDOW_FONT_ITALIC = false # Default italic?
    MESSAGE_WINDOW_FONT_OUTLINE = true # Default outline?
    MESSAGE_WINDOW_FONT_SHADOW = false # Default shadow?

    end # MESSAGE
    end # YEA

    #==============================================================================
    # ▼ Editting anything past this point may potentially result in causing
    # computer damage, incontinence, explosion of user's head, coma, death, and/or
    # halitosis so edit at your own risk.
    #==============================================================================

    #==============================================================================
    # ■ Variable
    #==============================================================================

    module Variable

    #--------------------------------------------------------------------------
    # self.message_rows
    #--------------------------------------------------------------------------
    def self.message_rows
    return 4 if YEA::MESSAGE::VARIABLE_ROWS <= 0
    return 4 if $game_variables[YEA::MESSAGE::VARIABLE_ROWS] <= 0
    return $game_variables[YEA::MESSAGE::VARIABLE_ROWS]
    end

    #--------------------------------------------------------------------------
    # self.message_width
    #--------------------------------------------------------------------------
    def self.message_width
    return Graphics.width if YEA::MESSAGE::VARIABLE_WIDTH <= 0
    return Graphics.width if $game_variables[YEA::MESSAGE::VARIABLE_WIDTH] <= 0
    return $game_variables[YEA::MESSAGE::VARIABLE_WIDTH]
    end

    end # Variable

    #==============================================================================
    # ■ Game_Interpreter
    #==============================================================================

    class Game_Interpreter

    #--------------------------------------------------------------------------
    # overwrite method: command_101
    #--------------------------------------------------------------------------
    def command_101
    wait_for_message
    $game_message.face_name = @params[0]
    $game_message.face_index = @params[1]
    $game_message.background = @params[2]
    $game_message.position = @params[3]
    while continue_message_string?
    @index += 1
    if @list[@index].code == 401
    $game_message.add(@list[@index].parameters[0])
    end
    break if $game_message.texts.size >= Variable.message_rows
    end
    case next_event_code
    when 102
    @index += 1
    setup_choices(@list[@index].parameters)
    when 103
    @index += 1
    setup_num_input(@list[@index].parameters)
    when 104
    @index += 1
    setup_item_choice(@list[@index].parameters)
    end
    wait_for_message
    end

    #--------------------------------------------------------------------------
    # new method: continue_message_string?
    #--------------------------------------------------------------------------
    def continue_message_string?
    return true if next_event_code == 101 && Variable.message_rows > 4
    return next_event_code == 401
    end

    end # Game_Interpreter

    #==============================================================================
    # ■ Window_Base
    #==============================================================================

    class Window_Base < Window

    #--------------------------------------------------------------------------
    # new method: setup_message_font
    #--------------------------------------------------------------------------
    def setup_message_font
    @message_font = true
    change_color(normal_color)
    contents.font.out_color = Font.default_out_color
    contents.font.name = YEA::MESSAGE::MESSAGE_WINDOW_FONT_NAME
    contents.font.size = YEA::MESSAGE::MESSAGE_WINDOW_FONT_SIZE
    contents.font.bold = YEA::MESSAGE::MESSAGE_WINDOW_FONT_BOLD
    contents.font.italic = YEA::MESSAGE::MESSAGE_WINDOW_FONT_ITALIC
    contents.font.outline = YEA::MESSAGE::MESSAGE_WINDOW_FONT_OUTLINE
    contents.font.shadow = YEA::MESSAGE::MESSAGE_WINDOW_FONT_SHADOW
    end

    #--------------------------------------------------------------------------
    # alias method: reset_font_settings
    #--------------------------------------------------------------------------
    alias window_base_reset_font_settings_ams reset_font_settings
    def reset_font_settings
    if @message_font
    setup_message_font
    else
    window_base_reset_font_settings_ams
    contents.font.out_color = Font.default_out_color
    contents.font.outline = Font.default_outline
    contents.font.shadow = Font.default_shadow
    end
    end

    #--------------------------------------------------------------------------
    # alias method: convert_escape_characters
    #--------------------------------------------------------------------------
    alias window_base_convert_escape_characters_ams convert_escape_characters
    def convert_escape_characters(text)
    result = window_base_convert_escape_characters_ams(text)
    result = convert_ace_message_system_new_escape_characters(result)
    return result
    end

    #--------------------------------------------------------------------------
    # new method: convert_ace_message_system_new_escape_characters
    #--------------------------------------------------------------------------
    def convert_ace_message_system_new_escape_characters(result)
    #---
    result.gsub!(/\eFR/i) { "\eAMSF[0]" }
    result.gsub!(/\eFB/i) { "\eAMSF[1]" }
    result.gsub!(/\eFI/i) { "\eAMSF[2]" }
    result.gsub!(/\eFO/i) { "\eAMSF[3]" }
    result.gsub!(/\eFS/i) { "\eAMSF[4]" }
    #---
    result.gsub!(/\eAC\[([-+]?\d+)\]/i) { escape_actor_class_name($1.to_i) }
    result.gsub!(/\eAS\[([-+]?\d+)\]/i) { escape_actor_subclass_name($1.to_i) }
    result.gsub!(/\eAN\[([-+]?\d+)\]/i) { escape_actor_nickname($1.to_i) }
    #---
    result.gsub!(/\eNC\[(\d+)\]/i) { $data_classes[$1.to_i].name }
    result.gsub!(/\eNI\[(\d+)\]/i) { $data_items[$1.to_i].name }
    result.gsub!(/\eNW\[(\d+)\]/i) { $data_weapons[$1.to_i].name }
    result.gsub!(/\eNA\[(\d+)\]/i) { $data_armors[$1.to_i].name }
    result.gsub!(/\eNS\[(\d+)\]/i) { $data_skills[$1.to_i].name }
    result.gsub!(/\eNT\[(\d+)\]/i) { $data_states[$1.to_i].name }
    #---
    result.gsub!(/\eIC\[(\d+)\]/i) { escape_icon_item($1.to_i, :class) }
    result.gsub!(/\eII\[(\d+)\]/i) { escape_icon_item($1.to_i, :item) }
    result.gsub!(/\eIW\[(\d+)\]/i) { escape_icon_item($1.to_i, :weapon) }
    result.gsub!(/\eIA\[(\d+)\]/i) { escape_icon_item($1.to_i, :armour) }
    result.gsub!(/\eIS\[(\d+)\]/i) { escape_icon_item($1.to_i, :skill) }
    result.gsub!(/\eIT\[(\d+)\]/i) { escape_icon_item($1.to_i, :state) }
    #---
    return result
    end

    #--------------------------------------------------------------------------
    # new method: escape_actor_class_name
    #--------------------------------------------------------------------------
    def escape_actor_class_name(actor_id)
    actor_id = $game_party.members[actor_id.abs].id if actor_id <= 0
    actor = $game_actors[actor_id]
    return "" if actor.nil?
    return actor.class.name
    end

    #--------------------------------------------------------------------------
    # new method: actor_subclass_name
    #--------------------------------------------------------------------------
    def escape_actor_subclass_name(actor_id)
    return "" unless $imported["YEA-ClassSystem"]
    actor_id = $game_party.members[actor_id.abs].id if actor_id <= 0
    actor = $game_actors[actor_id]
    return "" if actor.nil?
    return "" if actor.subclass.nil?
    return actor.subclass.name
    end

    #--------------------------------------------------------------------------
    # new method: escape_actor_nickname
    #--------------------------------------------------------------------------
    def escape_actor_nickname(actor_id)
    actor_id = $game_party.members[actor_id.abs].id if actor_id <= 0
    actor = $game_actors[actor_id]
    return "" if actor.nil?
    return actor.nickname
    end

    #--------------------------------------------------------------------------
    # new method: escape_icon_item
    #--------------------------------------------------------------------------
    def escape_icon_item(data_id, type)
    case type
    when :class
    return "" unless $imported["YEA-ClassSystem"]
    icon = $data_classes[data_id].icon_index
    name = $data_items[data_id].name
    when :item
    icon = $data_items[data_id].icon_index
    name = $data_items[data_id].name
    when :weapon
    icon = $data_weapons[data_id].icon_index
    name = $data_weapons[data_id].name
    when :armour
    icon = $data_armors[data_id].icon_index
    name = $data_armors[data_id].name
    when :skill
    icon = $data_skills[data_id].icon_index
    name = $data_skills[data_id].name
    when :state
    icon = $data_states[data_id].icon_index
    name = $data_states[data_id].name
    else; return ""
    end
    text = "\eI[#{icon}]" + name
    return text
    end

    #--------------------------------------------------------------------------
    # alias method: process_escape_character
    #--------------------------------------------------------------------------
    alias window_base_process_escape_character_ams process_escape_character
    def process_escape_character(code, text, pos)
    case code.upcase
    #---
    when 'FZ'
    contents.font.size = obtain_escape_param(text)
    when 'FN'
    text.sub!(/\[(.*?)\]/, "")
    font_name = $1.to_s
    font_name = Font.default_name if font_name.nil?
    contents.font.name = font_name.to_s
    #---
    when 'OC'
    colour = text_color(obtain_escape_param(text))
    contents.font.out_color = colour
    when 'OO'
    contents.font.out_color.alpha = obtain_escape_param(text)
    #---
    when 'AMSF'
    case obtain_escape_param(text)
    when 0; reset_font_settings
    when 1; contents.font.bold = !contents.font.bold
    when 2; contents.font.italic = !contents.font.italic
    when 3; contents.font.outline = !contents.font.outline
    when 4; contents.font.shadow = !contents.font.shadow
    end
    #---
    when 'PX'
    pos[:x] = obtain_escape_param(text)
    when 'PY'
    pos[:y] = obtain_escape_param(text)
    #---
    when 'PIC'
    text.sub!(/\[(.*?)\]/, "")
    bmp = Cache.picture($1.to_s)
    rect = Rect.new(0, 0, bmp.width, bmp.height)
    contents.blt(pos[:x], pos[:y], bmp, rect)
    #---
    else
    window_base_process_escape_character_ams(code, text, pos)
    end
    end

    end # Window_Base

    #==============================================================================
    # ■ Window_ChoiceList
    #==============================================================================

    class Window_ChoiceList < Window_Command

    #--------------------------------------------------------------------------
    # alias method: initialize
    #--------------------------------------------------------------------------
    alias window_choicelist_initialize_ams initialize
    def initialize(message_window)
    window_choicelist_initialize_ams(message_window)
    setup_message_font
    end

    end # Window_ChoiceList

    #==============================================================================
    # ■ Window_ScrollText
    #==============================================================================

    class Window_ScrollText < Window_Base

    #--------------------------------------------------------------------------
    # alias method: initialize
    #--------------------------------------------------------------------------
    alias window_scrolltext_initialize_ams initialize
    def initialize
    window_scrolltext_initialize_ams
    setup_message_font
    end

    end # Window_ScrollText

    #==============================================================================
    # ■ Window_NameMessage
    #==============================================================================

    class Window_NameMessage < Window_Base

    #--------------------------------------------------------------------------
    # initialize
    #--------------------------------------------------------------------------
    def initialize(message_window)
    @message_window = message_window
    super(0, 0, Graphics.width, fitting_height(1))
    self.opacity = YEA::MESSAGE::NAME_WINDOW_OPACITY
    self.z = @message_window.z + 1
    self.openness = 0
    setup_message_font
    @close_counter = 0
    deactivate
    end

    #--------------------------------------------------------------------------
    # update
    #--------------------------------------------------------------------------
    def update
    super
    return if self.active
    return if self.openness == 0
    return if @closing
    @close_counter -= 1
    return if @close_counter > 0
    close
    end

    #--------------------------------------------------------------------------
    # start_close
    #--------------------------------------------------------------------------
    def start_close
    @close_counter = 4
    deactivate
    end

    #--------------------------------------------------------------------------
    # force_close
    #--------------------------------------------------------------------------
    def force_close
    @close_counter = 0
    deactivate
    close
    end

    #--------------------------------------------------------------------------
    # start
    #--------------------------------------------------------------------------
    def start(text, x_position)
    @text = text.clone
    set_width
    create_contents
    set_x_position(x_position)
    set_y_position
    refresh
    activate
    open
    end

    #--------------------------------------------------------------------------
    # set_width
    #--------------------------------------------------------------------------
    def set_width
    text = @text.clone
    dw = standard_padding * 2 + text_size(text).width
    dw += YEA::MESSAGE::NAME_WINDOW_PADDING * 2
    dw += calculate_size(text.slice!(0, 1), text) until text.empty?
    self.width = dw
    end

    #--------------------------------------------------------------------------
    # calculate_size
    #--------------------------------------------------------------------------
    def calculate_size(code, text)
    case code
    when "\e"
    return calculate_escape_code_width(obtain_escape_code(text), text)
    else
    return 0
    end
    end

    #--------------------------------------------------------------------------
    # calculate_escape_code_width
    #--------------------------------------------------------------------------
    def calculate_escape_code_width(code, text)
    dw = -text_size("\e").width - text_size(code).width
    case code.upcase
    when 'C', 'OC', 'OO'
    dw += -text_size("[" + obtain_escape_param(text).to_s + "]").width
    return dw
    when 'I'
    dw += -text_size("[" + obtain_escape_param(text).to_s + "]").width
    dw += 24
    return dw
    when '{'
    make_font_bigger
    when '}'
    make_font_smaller
    when 'FZ'
    contents.font.size = obtain_escape_param(text)
    when 'FN'
    text.sub!(/\[(.*?)\]/, "")
    font_name = $1.to_s
    font_name = Font.default_name if font_name.nil?
    contents.font.name = font_name.to_s
    when 'AMSF'
    case obtain_escape_param(text)
    when 0; reset_font_settings
    when 1; contents.font.bold = !contents.font.bold
    when 2; contents.font.italic = !contents.font.italic
    when 3; contents.font.outline = !contents.font.outline
    when 4; contents.font.shadow = !contents.font.shadow
    end
    else
    return dw
    end
    end

    #--------------------------------------------------------------------------
    # set_y_position
    #--------------------------------------------------------------------------
    def set_x_position(x_position)
    case x_position
    when 1 # Left
    self.x = @message_window.x
    self.x += YEA::MESSAGE::NAME_WINDOW_X_BUFFER
    when 2 # 3/10
    self.x = @message_window.x
    self.x += @message_window.width * 3 / 10
    self.x -= self.width / 2
    when 3 # Center
    self.x = @message_window.x
    self.x += @message_window.width / 2
    self.x -= self.width / 2
    when 4 # 7/10
    self.x = @message_window.x
    self.x += @message_window.width * 7 / 10
    self.x -= self.width / 2
    when 5 # Right
    self.x = @message_window.x + @message_window.width
    self.x -= self.width
    self.x -= YEA::MESSAGE::NAME_WINDOW_X_BUFFER
    end
    self.x = [[self.x, Graphics.width - self.width].min, 0].max
    end

    #--------------------------------------------------------------------------
    # set_y_position
    #--------------------------------------------------------------------------
    def set_y_position
    case $game_message.position
    when 0
    self.y = @message_window.height
    self.y -= YEA::MESSAGE::NAME_WINDOW_Y_BUFFER
    else
    self.y = @message_window.y - self.height
    self.y += YEA::MESSAGE::NAME_WINDOW_Y_BUFFER
    end
    end

    #--------------------------------------------------------------------------
    # refresh
    #--------------------------------------------------------------------------
    def refresh
    contents.clear
    reset_font_settings
    @text = sprintf("\eC[%d]%s", YEA::MESSAGE::NAME_WINDOW_COLOUR, @text)
    draw_text_ex(YEA::MESSAGE::NAME_WINDOW_PADDING, 0, @text)
    end

    end # Window_NameMessage

    #==============================================================================
    # ■ Window_Message
    #==============================================================================

    class Window_Message < Window_Base

    #--------------------------------------------------------------------------
    # alias method: initialize
    #--------------------------------------------------------------------------
    alias window_message_initialize_ams initialize
    def initialize
    window_message_initialize_ams
    setup_message_font
    end

    #--------------------------------------------------------------------------
    # overwrite method: window_width
    #--------------------------------------------------------------------------
    def window_width
    return Variable.message_width
    end

    #--------------------------------------------------------------------------
    # overwrite method: window_height
    #--------------------------------------------------------------------------
    def window_height
    return fitting_height(Variable.message_rows)
    end

    #--------------------------------------------------------------------------
    # alias method: create_all_windows
    #--------------------------------------------------------------------------
    alias window_message_create_all_windows_ams create_all_windows
    def create_all_windows
    window_message_create_all_windows_ams
    @name_window = Window_NameMessage.new(self)
    end

    #--------------------------------------------------------------------------
    # overwrite method: create_back_bitmap
    #--------------------------------------------------------------------------
    def create_back_bitmap
    @back_bitmap = Bitmap.new(width, height)
    rect1 = Rect.new(0, 0, Graphics.width, 12)
    rect2 = Rect.new(0, 12, Graphics.width, fitting_height(4) - 24)
    rect3 = Rect.new(0, fitting_height(4) - 12, Graphics.width, 12)
    @back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
    @back_bitmap.fill_rect(rect2, back_color1)
    @back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
    end

    #--------------------------------------------------------------------------
    # alias method: dispose_all_windows
    #--------------------------------------------------------------------------
    alias window_message_dispose_all_windows_ams dispose_all_windows
    def dispose_all_windows
    window_message_dispose_all_windows_ams
    @name_window.dispose
    end

    #--------------------------------------------------------------------------
    # alias method: update_all_windows
    #--------------------------------------------------------------------------
    alias window_message_update_all_windows_ams update_all_windows
    def update_all_windows
    window_message_update_all_windows_ams
    @name_window.update
    @name_window.back_opacity = self.back_opacity
    @name_window.opacity = self.opacity
    end

    #--------------------------------------------------------------------------
    # alias method: update_show_fast
    #--------------------------------------------------------------------------
    alias window_message_update_show_fast_ams update_show_fast
    def update_show_fast
    @show_fast = true if Input.press?(YEA::MESSAGE::TEXT_SKIP)
    window_message_update_show_fast_ams
    end

    #--------------------------------------------------------------------------
    # overwrite method: input_pause
    #--------------------------------------------------------------------------
    def input_pause
    self.pause = true
    wait(10)
    Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C) ||
    Input.press?(YEA::MESSAGE::TEXT_SKIP)
    Input.update
    self.pause = false
    end

    #--------------------------------------------------------------------------
    # overwrite method: convert_escape_characters
    #--------------------------------------------------------------------------
    def convert_escape_characters(text)
    result = super(text.to_s.clone)
    result = namebox_escape_characters(result)
    result = message_escape_characters(result)
    return result
    end

    #--------------------------------------------------------------------------
    # new method: namebox_escape_characters
    #--------------------------------------------------------------------------
    def namebox_escape_characters(result)
    result.gsub!(/\eN\<(.+?)\>/i) { namewindow($1, 1) }
    result.gsub!(/\eN1\<(.+?)\>/i) { namewindow($1, 1) }
    result.gsub!(/\eN2\<(.+?)\>/i) { namewindow($1, 2) }
    result.gsub!(/\eNC\<(.+?)\>/i) { namewindow($1, 3) }
    result.gsub!(/\eN3\<(.+?)\>/i) { namewindow($1, 3) }
    result.gsub!(/\eN4\<(.+?)\>/i) { namewindow($1, 4) }
    result.gsub!(/\eN5\<(.+?)\>/i) { namewindow($1, 5) }
    result.gsub!(/\eNR\<(.+?)\>/i) { namewindow($1, 5) }
    return result
    end

    #--------------------------------------------------------------------------
    # new method: namebox
    #--------------------------------------------------------------------------
    def namewindow(text, position)
    @name_text = text
    @name_position = position
    return ""
    end

    #--------------------------------------------------------------------------
    # new method: message_escape_characters
    #--------------------------------------------------------------------------
    def message_escape_characters(result)
    result.gsub!(/\eAF\[(-?\d+)]/i) { change_face($1.to_i) }
    return result
    end

    #--------------------------------------------------------------------------
    # new method: change_face
    #--------------------------------------------------------------------------
    def change_face(actor_id)
    actor_id = $game_party.members[actor_id.abs].id if actor_id <= 0
    actor = $game_actors[actor_id]
    return "" if actor.nil?
    $game_message.face_name = actor.face_name
    $game_message.face_index = actor.face_index
    return ""
    end

    #--------------------------------------------------------------------------
    # alias method: new_page
    #--------------------------------------------------------------------------
    alias window_message_new_page_ams new_page
    def new_page(text, pos)
    adjust_message_window_size
    window_message_new_page_ams(text, pos)
    end

    #--------------------------------------------------------------------------
    # overwrite method: new_line_x
    #--------------------------------------------------------------------------
    def new_line_x
    return $game_message.face_name.empty? ? 0 : YEA::MESSAGE::FACE_INDENT_X
    end

    #--------------------------------------------------------------------------
    # new method: adjust_message_window_size
    #--------------------------------------------------------------------------
    def adjust_message_window_size
    self.height = window_height
    self.width = window_width
    create_contents
    update_placement
    self.x = (Graphics.width - self.width) / 2
    start_name_window
    end

    #--------------------------------------------------------------------------
    # new method: clear_name_window
    #--------------------------------------------------------------------------
    def clear_name_window
    @name_text = ""
    @name_position = 0
    end

    #--------------------------------------------------------------------------
    # new method: start_name_window
    #--------------------------------------------------------------------------
    def start_name_window
    return if @name_text == ""
    @name_window.start(@name_text, @name_position)
    end

    #--------------------------------------------------------------------------
    # overwrite method: fiber_main
    #--------------------------------------------------------------------------
    def fiber_main
    $game_message.visible = true
    update_background
    update_placement
    loop do
    process_all_text if $game_message.has_text?
    process_input
    $game_message.clear
    @gold_window.close
    @name_window.start_close
    Fiber.yield
    break unless text_continue?
    end
    close_and_wait
    $game_message.visible = false
    @fiber = nil
    end

    #--------------------------------------------------------------------------
    # alias method: open_and_wait
    #--------------------------------------------------------------------------
    alias window_message_open_and_wait_ams open_and_wait
    def open_and_wait
    clear_name_window
    adjust_message_window_size
    window_message_open_and_wait_ams
    end

    #--------------------------------------------------------------------------
    # alias method: close_and_wait
    #--------------------------------------------------------------------------
    alias window_message_close_and_wait_ams close_and_wait
    def close_and_wait
    @name_window.force_close
    window_message_close_and_wait_ams
    end

    #--------------------------------------------------------------------------
    # alias method: all_close?
    #--------------------------------------------------------------------------
    alias window_message_all_close_ams all_close?
    def all_close?
    return window_message_all_close_ams && @name_window.close?
    end

    #--------------------------------------------------------------------------
    # alias method: process_escape_character
    #--------------------------------------------------------------------------
    alias window_message_process_escape_character_ams process_escape_character
    def process_escape_character(code, text, pos)
    case code.upcase
    when 'W' # Wait
    wait(obtain_escape_param(text))
    else
    window_message_process_escape_character_ams(code, text, pos)
    end
    end

    end # Window_Message

    #==============================================================================
    #
    # ▼ End of File
    #
    #==============================================================================

     

  6. Ho modificato leggermente il dungeon allargando un po' le vie e aggiungendo ossa e rocce. Non ho voluto inserire fiumi o rialzi, ho provato ma l'effetto non mi piaceva. Magari lì aggiungo nel successivo livello. Ho rifatto l'ingresso a questo dungeon che sarà attraverso una cripta e ho inserito una stanza del boss.

     

    http://i62.tinypic.com/2n7fde.jpg
    http://i60.tinypic.com/ekkj2q.jpg
    http://i62.tinypic.com/8vzosg.jpg

     

    Ho però un grosso problema tecnico. Nel dungeon ci sono un cartello e una porta (che porta al boss) che fanno apparire dei messaggi. Tuttavia questi messaggi non appaiono bene, si vede semplicemente il profilo destro della cornice in mezzo allo schermo. Quale può essere il problema? Per i messaggi uso l'Ace message system 1,05

  7. Ho provato la tua demo non ho capito dove finisce ma dopo aver parlato con il tipo che mi da i dischi non sapevo dove andare. A parte il livello di volgarità uber (la tua ragazza è davvero così?) devo dire che è divertente. Ci sono alcuni problemi di mapping. Ad esempio la casa di dante è troppo grande e vuota, la libreria e l'armadio sono mal posti. Dovresti metterli in modo che metà sia sul pavimento e metà sul muro.

    Anche la mappa esterna può essere migliorata aggiungendo qualche decorazione in più, il laghetto in basso a davvero poco senso.

    Il battler è da migliorare dovresti aggiungere una o due abilità e qualche pozione in più. Sono riuscito a malapena a sconfiggere dante con il poco che avevo.

  8. Nuova versione del dungeon

     

    http://i60.tinypic.com/e8plir.jpg

     

    In realtà continuerà ma vorrei sapere che ne pensate.

    Per gli incontri credo che eliminerò gli incontri casuali. Ma non qui nel dungeon. Qui inserirò solo delle zone limitate in cui potranno esserci gli incontri. Il giocatore però non saprà con precisioni quali sono.

  9. Nell'immagine non si vedeno bene ma ho messo un po' di crepe sulle pareti, muschi e piante non credo possano crescere all'interno di una grotta sotterranea.

    nella parte nord-est ci sarà una scala che conduce a un piano superiore.

    Ho creato quegli spazi vuoti perché non mi piace quando cammino in un dungeon vedere sopra e sotto strade e mura. Mi piace che si mostri un pezzo alla volta.

    Penso comunque di poter eliminare il corridoio orizzontale a sud e metterci subito la scala.

     

    EDIT:

    Gli incontri casuali non piacciono neanche a me (tranne nei dungeon sotteranei) ma, non so come crearne di diversi.

  10. Non è necessario che muoia il buco conduce a un'altra mappa quindi mi basta un teletrasporto. Il problema è che appena clicco il tasto per far spostare il personaggio parte il teletrasporto. In pratica non si vede che il pg cammina sul buco. Ho provato a mettere un ritarto di 10 frame. Se cammino l'effetto è buono, ma se corro attraversa il buco e si teletrasporta.

×
×
  • Create New...