Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

  • Chatbox

    You don't have permission to chat.
    Load More
Melosx

RPGMAKER VX ACE Collezione di Bug Fix per RpgMaker VXAce

Recommended Posts

VXAce SP1 [IMPORTANTE]

Fix ufficiale che corregge diversi errori degli script base. Ulteriori info nello script.

 

 

#==============================================================================
# ■ VXAce_SP1
#------------------------------------------------------------------------------
# This is an official bug fix for the default scripts.
# Place this above Materials.
#==============================================================================
 
#------------------------------------------------------------------------------
# 【Bug Fixes】
#------------------------------------------------------------------------------
# ● Event command "Change State" when you simultaneously add and remove the same 
# state, thereafter add that state fails.
# ● Event Command "Show Animation" the animation and the map scroll are not 
# synched.
# ● Auto battle, action not chosen correctly.
# ● When an equipment is removed because you can't equip it anymore, and as a 
# result another equipment needs to be removed, that equipment grows ?
# ● Event comand Erase picture fix. The game slows down as a whole.
# ● Move route option "Jump if not possible", during the execution if you touch 
# an event with the trigger "Player touch" that event is queued. 
# ● Magic reflection skill does not reflect the state validity.
# ● Font setting, when putting bold or italic as default, that setting changes 
# on screen change
#------------------------------------------------------------------------------
class Game_Battler
  attr_accessor :magic_reflection
  #--------------------------------------------------------------------------
  # ● 敵対関係の判定
  #--------------------------------------------------------------------------
  alias vxace_sp1_opposite? opposite?
  def opposite?(battler)
    vxace_sp1_opposite?(battler) || battler.magic_reflection
  end
end
#------------------------------------------------------------------------------
class Game_Actor
  #--------------------------------------------------------------------------
  # ● 装備できない装備品を外す
  #     item_gain : 外した装備品をパーティに戻す
  #--------------------------------------------------------------------------
  alias vxace_sp1_release_unequippable_items release_unequippable_items
  def release_unequippable_items(item_gain = true)
    loop do
      last_equips = equips.dup
      vxace_sp1_release_unequippable_items(item_gain)
      return if equips == last_equips
    end
  end
  #--------------------------------------------------------------------------
  # ● 自動戦闘時の戦闘行動を作成
  #--------------------------------------------------------------------------
  def make_auto_battle_actions
    @actions.size.times do |i|
      @actions[i] = make_action_list.max_by {|action| action.value }
    end
  end
end
#------------------------------------------------------------------------------
class Game_Player
  #--------------------------------------------------------------------------
  # ● マップイベントの起動
  #     triggers : トリガーの配列
  #     normal   : プライオリティ[通常キャラと同じ]かそれ以外か
  #--------------------------------------------------------------------------
  alias vxace_sp1_start_map_event start_map_event
  def start_map_event(x, y, triggers, normal)
    return if $game_map.interpreter.running?
    vxace_sp1_start_map_event(x, y, triggers, normal)
  end
end
#------------------------------------------------------------------------------
class Game_Picture
  #--------------------------------------------------------------------------
  # ● ピクチャの消去
  #--------------------------------------------------------------------------
  alias vxace_sp1_erase erase
  def erase
    vxace_sp1_erase
    @origin = 0
  end
end
#------------------------------------------------------------------------------
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● ステートの変更
  #--------------------------------------------------------------------------
  alias vxace_sp1_command_313 command_313
  def command_313
    vxace_sp1_command_313
    $game_party.clear_results
  end
end
#------------------------------------------------------------------------------
class Sprite_Character
  #--------------------------------------------------------------------------
  # ● 位置の更新
  #--------------------------------------------------------------------------
  alias vxace_sp1_update_position update_position
  def update_position
    move_animation(@character.screen_x - x, @character.screen_y - y)
    vxace_sp1_update_position
  end
  #--------------------------------------------------------------------------
  # ● アニメーションの移動
  #--------------------------------------------------------------------------
  def move_animation(dx, dy)
    if @animation && @animation.position != 3
      @ani_ox += dx
      @ani_oy += dy
      @ani_sprites.each do |sprite|
        sprite.x += dx
        sprite.y += dy
      end
    end
  end
end
#------------------------------------------------------------------------------
class Sprite_Picture
  #--------------------------------------------------------------------------
  # ● 転送元ビットマップの更新
  #--------------------------------------------------------------------------
  alias vxace_sp1_update_bitmap update_bitmap
  def update_bitmap
    if @picture.name.empty?
      self.bitmap = nil
    else
      vxace_sp1_update_bitmap
    end
  end
end
#------------------------------------------------------------------------------
class Window_Base
  #--------------------------------------------------------------------------
  # ● フォント設定のリセット
  #--------------------------------------------------------------------------
  alias vxace_sp1_reset_font_settings reset_font_settings
  def reset_font_settings
    vxace_sp1_reset_font_settings
    contents.font.bold = Font.default_bold
    contents.font.italic = Font.default_italic
  end
end
#------------------------------------------------------------------------------
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 魔法反射の発動
  #--------------------------------------------------------------------------
  alias vxace_sp1_invoke_magic_reflection invoke_magic_reflection
  def invoke_magic_reflection(target, item)
    @subject.magic_reflection = true
    vxace_sp1_invoke_magic_reflection(target, item)
    @subject.magic_reflection = false
  end
end 

 

 

 

VXAce Star Passability Bug Fix [IMPORTANTE]

Corregge errori nel controllo della passabilità dei tile. Ulteriori info nello script.

 

 

#==============================================================================
# VXAce Star Passability Bug Fix
#   by NeonBlack
# -- Level: Easy, Normal
# -- Requires: n/a
# -- This simply checks if the tile is a star before checking passability.  
# If the tile is a star and it is passable, it then checks the tile UNDER it.  
# If not, it returns falseas always. This prevents everything that is a star 
# tile from being passable.
#
# -- Original Topic:
# http://forums.rpgmakerweb.com/index.php?/topic/7625-vxace-passabilities-bug/
#==============================================================================

class Game_Map

  def check_passage(x, y, bit)
        all_tiles(x, y).each do |tile_id|
          flag = tileset.flags[tile_id]
          if flag & 0x10 != 0                       # [☆]: No effect on passage
                next             if flag & bit == 0 # [○] : Passable but star
                return false if flag & bit == bit   # [×] : Impassable
          else
                return true  if flag & bit == 0  # [○] : Passable
                return false if flag & bit == bit   # [×] : Impassable
          end
        end
        return false                                              # Impassable
  end
end 

 

 

 
Event Jitter Fix [IMPORTANTE]

Correggere errori di posizionamento degli eventi. Ulteriori info nello script.

 

 

##------
## Display rounding error fix created by Neon Black.
##
## When certain slow display panning speeds are used, events will improperly
## round floating values to determine their position on screen.  This causes
## them to appear off from the tilemap by a single pixel.  Though minor this is
## noticable.  This snippet fixes this behaviour.
##
## This snippet may be used in any project.
##
## -- Original Topic:
## http://forums.rpgmakerweb.com/index.php?/topic/17448-event-jitter-fix-display-rounding-error-fix
##------
class Game_Map ## Rounds X and Y display values DOWN so the nearest 32 is found.
  def display_x
    (@display_x * 32).floor.to_f / 32
  end
  
  def display_y
    (@display_y * 32).floor.to_f / 32
  end
  
  def adjust_x(x)
    if loop_horizontal? && x < display_x - (width - screen_tile_x) / 2
      x - display_x + @map.width
    else
      x - display_x
    end
  end
  
  def adjust_y(y)
    if loop_vertical? && y < display_y - (height - screen_tile_y) / 2
      y - display_y + @map.height
    else
      y - display_y
    end
  end
end 

 

 

 
Text Cache Fix [IMPORTANTE]

Corregge il modo di rappresentare i caratteri dei testi. Ulteriori info nello script

 

 

# Text Cache
# by Mithran
# posted at forums.rpgmakerweb.com

# Instructions
%Q(
This script is a workaround for the Bitmap#draw_text issues in RPGMaker VX Ace.

By default, there are several errors with Bitmap#draw_text in Ace.

1.  Text shrinking algorithm is overzealous.  Text drawn to a rect given by 
    its own text_size is reduced in size.  This is both counterintuitive, and not 
    the way it worked in previous versions (VX).
  
2.  Text drawn to any rect wider than approx 640 pixels wraps around to the 
    beginning of the line, overwriting previous text.  This also causes center
    and right alignments to fail.  This is both unnecessary and not how it worked
    in VX.
    
3.  Text drawn character by character with non true-type fonts has awkward spacing.
    In addition, the text_size of a string of characters is not the same as the 
    sum of the text_size of each character.
    This existed even in VX.
    
4.  The first character of a Bitmap#draw_text command for certain letters on 
    certain fonts is not drawn correctly.  Since message window draws character
    by character, this can become a major issue. (example: Verdana 20 pt font)
    
These errors can be demonstrated using my text draw debugger:
http://pastebin.com/p55ukZP2
    
What this script does:

1.  Adds 2 pixels to any draw_text width, so text can be intuitively drawn to its
    own text_size rect. Offsets x coordinate where appropriate.
    If SIMPLE_FIX is set to true, only this fix will be enabled.
    
2.  Adds a text cache.  Instead of drawing text directly when called, a unique
    bitmap is created for any potential text draw with buffers, drawn with extra
    space around it.  The character is then copied whenever a text draw is 
    attempted.
    
    Text Caching can be turned off by setting SIMPLE_FIX to true.
    
    Text Caching also has the following features:
    - Much faster processing than the original Bitmap#draw_text.
      Trades a small amount of memory to accomodate faster processing speed.
      The first time any letter is drawn takes approximately 3-4 times as long, 
      subsquently, any time this same letter and font is drawn it is upwards of
      twice as fast.  The longer the string drawn, the bigger the difference.
    - Accounts for a 3-length string when checking the size.  This makes single
      characters drawn look more natural for the offending fonts.
    Does not work with:
    - Reduced size text.
      If text is squeezed due to not being given enough room to draw, text caching
      is bypassed in favor of the original method.  This is due to the text 
      squeezing algorithm reducing each character by a variable amount that can
      not be determined with text_size.  Manually stretching or aligning this
      "squeezed" text looks completely awful, so for now, this will have to 
      stay like this.
      The exception to this is if the text has "just enough" room to draw, 
      it will be given the two extra pixels rather than squeezing it.
    - If text extends beyond MAX_DRAW_WIDTH, text caching will be forced.
      This disables the "squeeze" effect.  Using the default method means the text
      would draw over itself anyway, so this is the lesser of two evils.
      
Changelog:

v 1.01
  Fixed crash error when using F12 to reset. (Thanks Archiea_Nessiah)

v 1.0 
Official release.
)

# 
  
class Bitmap
  TEXT_TOP_BUFFER = 5
  TEXT_SIDE_BUFFER = 8 # buffer in pixels to draw text away from 
  # the edge of the bitmap, to prevent certain characters from being cut off
  SIMPLE_FIX = false # just adds the two pixels to prevent unnecessary squeeze
  MAX_TEXT_DRAW_WIDTH = 640 # tests have shown the draw fails at around 640px
  # if nil, no max width
  NO_FIX = false # completely disables the fix, for testing comparison
  
  
  alias draw_text_vxa draw_text
  def draw_text(*args)
    return draw_text_vxa(*args) if NO_FIX
    if args[0].is_a?(Rect)
      rect = args[0]
      x, y, width, height = rect.x, rect.y, rect.width, rect.height
      text = args[1].to_s.clone || ""
      align = args[2] || 0
    else
      x, y, width, height = *args[0..3]
      text = args[4].to_s.clone || ""
      align = args[5] || 0
    end
    text_rect = self.text_size(text)
    text_width = text_rect.width
    text_height = text_rect.height
    squeeze = text_width > width
    if SIMPLE_FIX or (squeeze and (MAX_TEXT_DRAW_WIDTH and width <= MAX_TEXT_DRAW_WIDTH))
      x -= align
      # shift one pixels to the left if centering 
      # two if right right justified
      # to offset the extra width given
      return draw_text_vxa(x, y, width + 2, height, text, align)
    else
      # TextCache.canvas(font) # passing the font slows this down extremly, changed it to later
      fontkey = self.font.to_a
      case align
      when 1; x += (width - text_width) / 2
      when 2; x += width - text_width
      end
      y += (height - text_height) / 2 # horizontal center
      buf = -TEXT_SIDE_BUFFER
      text.each_char { |char|
        letter = TextCache.letters(fontkey, char)
        draw_text_vxa(x + buf, y, letter.rect.width + 2, letter.height, char) if SIMPLE_FIX
        # swap with original method for debugging and simple fix
        self.blt(x + buf, y, letter, letter.rect) unless SIMPLE_FIX
        buf += letter.rect.width - TEXT_SIDE_BUFFER * 2
      }      
    end
  end
end

module TextCache
  BUFFER_DRAW = 300 # for drawing characters, to make sure there is enough room
  
  def self.canvas(font = nil)
    @canvas = Bitmap.new(32, 32) if @canvas.nil? || @canvas.disposed?
    #@canvas.font = font if font and font != @canvas.font
    @canvas
  end
  
  def self.letters(font, char)
    @cache ||= {}
    key = font + [char]
    if include?(key)
      return @cache[key]
    elsif char.empty?
      return empty_bitmap
    else
      return new_letter(font, char)
    end
  end
  
  def self.empty_bitmap # not used, added for completness in case the cache is accessed directly
    @cache[:empty] = Bitmap.new(32, 32) unless include?(:empty)
    @cache[:empty]
  end 
  
  def self.new_letter(fontary, char)
    font = create_font(fontary)
    # get the font
    canvas.font = font
    rect = canvas.text_size(char * 3) 
    # get size of character between two other characters (for better kerning)
    b = Bitmap.new((rect.width / 3) + Bitmap::TEXT_SIDE_BUFFER * 2, rect.height)
    # create bitmap just big enough for one character
    b.font = font
    # get the font
    b.draw_text_vxa(rect.x - b.text_size(" ").width + Bitmap::TEXT_SIDE_BUFFER, rect.y - Bitmap::TEXT_TOP_BUFFER, BUFFER_DRAW, rect.height + Bitmap::TEXT_TOP_BUFFER * 2, " #{char} ", 0)
    # draw blank spaces before and after character, fix for cutting off the 
    # first pixel using draw_text
    key = fontary + [char]
    @cache[key] = b    
  end
  
  def self.create_font(fontary)
    font = Font.new(*fontary[0..1])
    font.bold = fontary[2]
    font.italic = fontary[3]
    font.outline = fontary[4]
    font.shadow = fontary[5]
    font.color.set(*fontary[6..9])
    font.out_color.set(*fontary[10..13])
    font
  end

  
  def self.include?(key)
    @cache[key] && !@cache[key].disposed?
  end

  def self.clear
    @cache ||= {}
    @cache.clear
    GC.start
  end
  
end



class Font
  # font's instance variables are not reflective, so this has to be defined explicitly
  def to_a
    [name, size, bold, italic, outline, shadow, color.red, color.green, color.blue, color.alpha, out_color.red, out_color.green, out_color.blue, out_color.alpha]
  end
  
end 

 

 

 
Line Break Fix

Salta caratteri non rappresentabili.

 

 

class Window_Base
  alias :process_normal_character_vxa :process_normal_character
  def process_normal_character(c, pos)
        return unless c >= ' ' #skip drawing if c is not a displayable character
        process_normal_character_vxa(c, pos)
  end
end 

 

 

 
Picture Bug Fix
Corregge un errore nella cancellazione delle immagini. Ulteriori info nello script.

 

 

#==============================================================================
# ▼ Mithran Picture Bug Fix
# -- Created: 3/12/2012
#==============================================================================
# The problem is caused when a picture is erased it holds an assoicated "picture"
# object in memory as long as you stay on the same scene. Every time that picture
# object comes up, it creates a NEW blank bitmap, every frame, basically if you 
# want it to lag, create a lot of blank pictures when they get garbage collected,
# it lags. 

# Each erased picture creates a single 32x32 blank bitmap to associate 
# itself with, every frame, same with any picture shown as (none). Since the lag 
# is caused by garbage collection, which is basically uncontrollabe with Ruby.
#
# The reason why it constantly creates new blank pictures is because the base 
# scripts check for the picture name. And if it's "" (aka no picture name), 
# it keeps creating. When a picture is erased, it sets to ""
#
# This script fixes that. 
#==============================================================================

class Sprite_Picture
  def update_bitmap
    if @picture.name != @pic_name
      self.bitmap = Cache.picture(@picture.name)
    end
    @pic_name = @picture.name
  end
  
end


class Spriteset_Map
  
  def update_pictures
    $game_map.screen.pictures.each do |pic|
      @picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport2, pic)
      @picture_sprites[pic.number].update
      if pic.name == ""
        $game_map.screen.pictures.remove(pic.number)
        @picture_sprites[pic.number].dispose
        @picture_sprites[pic.number] = nil
      end
    end
  end

end

class Game_Pictures
  
  def remove(index)
    @data[index] = nil
  end
  
end 

 

 

 
Arrow Fix
Cambia temporaneamente il font per mostrare il carattere →.

 

 

# Add function for temporarily switching a window's current drawing font.
class Font
  def use( window )
        old_font = window.contents.font.dup
        window.contents.font = self
        yield
        window.contents.font = old_font  
  end
end

# Fixes the arrow character (→) used in places in the UI
# since custom font does not support that character
module Mez
  module ArrowFix
        FONT = Font.new(["Mona"])  # This is the font used for the arrows, checked in order.
  end
end

# For Actor Equip Window
class Window_EquipStatus
  alias mez_wes_dra draw_right_arrow
  def draw_right_arrow(x, y)
        Mez::ArrowFix::FONT.use(self) do
          mez_wes_dra(x, y)
        end
  end
end
 

 

 

 

Undefeated Hidden Enemies Visual Fix

Corregge un raro errore con nemici nascosti che riappaiono alla fine della battaglia. Ulteriori info nello script.

 

 

#==============================================================================
# 
# "Undefeated Hidden Enemies Visual Fix"
# Version 1.1
# Last Update: September 2nd, 2013
# Author: DerTraveler (dertraveler [at] gmail.com)
#
#==============================================================================
#
# Description:
#
# Fixes a small visual bug concerning hidden enemies that haven't appeared.
# Without the fix these enemies would appear for a very short moment before the
# battle ends, when the party flees from combat.
#
#==============================================================================
#
# How to use:
# 
# Just paste it anywhere in the Materials section.
#
#==============================================================================
#
# Changelog:
#   1.1:
#     - Change the implementation of Game_Enemy only instead of Game_Battler
#       and SceneManager, which were unneccessarily central changes.
#       Thanks to Mihel & Tsukihime for pointing out that the bug only occurs
#       when fleeing from battle and for hints regarding the cause of the
#       problem.
#
# Compatibility:
#
# Overwrites  - Game_Enemy: on_battle_end
#
#==============================================================================
#
# Terms of use:
#
# - Free to use in any commercial or non-commercial project.
# - Please mail me if you find bugs so I can fix them.
# - If you have feature requests, please also mail me, but I can't guarantee
#   that I will add every requested feature.
# - You don't need to credit me, if you don't want to for some reason, since
#   it's only a bugfix of a standard RPG Maker behaviour.
#
#==============================================================================

class Game_Enemy < Game_Battler
  
  # Identically to the implementation in Game_BattlerBase except of the removed
  # call to 'appear' in the end, which is unneccessary since the data of
  # defeated enemies aren't reused anywhere else.
  def on_battle_end
    @result.clear
    remove_battle_states
    remove_all_buffs
    clear_actions
    clear_tp unless preserve_tp?
  end
  
end  

 

 

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

io sono uno di quei nabbi XD per davvero. non ho ancora capito molto di script in generale (semplicemente per il fatto che preferisco fare con gli eventi quello che si potrebbe fare con gli script). però effettivamente una leggera spiegazione di quello che fanno ci sta, dai :P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

io sono uno di quei nabbi XD per davvero. non ho ancora capito molto di script in generale (semplicemente per il fatto che preferisco fare con gli eventi quello che si potrebbe fare con gli script). però effettivamente una leggera spiegazione di quello che fanno ci sta, dai :P

Ogizzibo ma ci hai tradito anche tu per il Vx ASS? XD

 

 

Scritto da Tapatalk

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

macchè XD giusto per essere un pochino poliedrico mi interesso ad altri tool. poi va beh che è quadratoso e puccioso(cosa che fa storcere parecchi nasi XD), ma volevo capire come funzionava con i tileset di sto vx ace(che poi chiamarli chipset secondo me era più carino XDD).

insomma, per non scrivere una pappardella, volevo riadattare i chipset del 2003 per sto tool da 4 bottoni( è quello che vale per non aver messo il controllo tasti)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Aggiunte le descrizioni. Così siete tutti felici.

 

 

Oji le differenze sono principalmente le dimensioni del singolo tile 32x32.

Comunque, il 2k3 lo installai giusto perchè mi servivano le RTP per far funzionare Fifth Era quindi non so bene che cosa faccia sto controllo tasti tanto amato, ma questo è quello che ha l'Ace.

 

Input.update

Updates input data. As a general rule, this method is called once per frame.

 

Input.press?(sym) (RGSS3)

Determines whether the button corresponding to the symbol sym is currently being pressed.

If the button is being pressed, returns TRUE. If not, returns FALSE.

if Input.press?(:C)  do_somethingend

Input.trigger?(sym) (RGSS3)

Determines whether the button corresponding to the symbol sym is currently being pressed again.

"Pressed again" is seen as time having passed between the button being not pressed and being pressed.

If the button is being pressed, returns TRUE. If not, returns FALSE.

 

Input.repeat?(sym) (RGSS3)

Determines whether the button corresponding to the symbol sym is currently being pressed again.

Unlike trigger?, takes into account the repeated input of a button being held down continuously.

If the button is being pressed, returns TRUE. If not, returns FALSE.

 

Input.dir4

Checks the status of the directional buttons, translates the data into a specialized 4-direction input format, and returns the number pad equivalent (2, 4, 6, 8).

If no directional buttons are being pressed (or the equivalent), returns 0.

 

Input.dir8

Checks the status of the directional buttons, translates the data into a specialized 8-direction input format, and returns the number pad equivalent (1, 2, 3, 4, 6, 7, 8, 9).

If no directional buttons are being pressed (or the equivalent), returns 0.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

beh XD no capisco bene i comandi che hai scritto, comunque è questa roba qui, che nei comandi standard del vx ace mi pare di non aver trovato

 

 

2ywe44o.jpg

 

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

L'Ace ha il controllo sui tasti Su, Giu, DX, SX, A[shift], B[X, Esc], C[Z, Invio, Spazio], X[A], Y, Z[D], L[Q] e R[W].

Tuttavia è possibile prende qualunque tasto con degli script che ampliano la scelta a tutta la tastiera, numeri e caratteri speciali compresi.

Per usarli, ad esempio in If-else, basta andare alla quarta pagina e scegliere Button oppure, se si usano script, selezionare la condizione Script e inserire il call script desiderato.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

  • Contenuti simili

    • Da Waldorf
      2D Áperdam
       
       
       
       

       
       
       
       
       
      Ecco qui, finalmente, la demo del mio primissimo progetto "Serio" ufficiale!
       
       
       
       
       
      Trama:
       
       
      La storia si svolge all'interno di un liceo, la scuola Áperdam, ed ha come centro focale la classe Seconda D.
       
       
      Questi ragazzi devono all'improvviso capire cosa fare di fronte allo strano comportamento dei professori, che li attaccano utilizzando strane tecniche prese dalle loro materie.
       
       
      Allo stesso tempo altri fatti strani si aggiungono, che spinge questi studenti ad indagare sull'accaduto, ma cercando lo stesso di seguire la loro routine scolastica.
       
       
       
       
       
      Gameplay:
       
       
      Come ogni RPG il gameplay è composto da 2 momenti:
       
       
       
       
       
      -Battaglia: Le battaglie, grazie ad un preciso utilizzo degli script di battaglia MOG, sono molto più dinamiche. Varie mosse infatti permettono l'esecuzione di particolari combo per poter eseguire un'altra mossa che complementa quella precedente. Inoltre altre mosse richiedono specifici tasti per essere lanciate. (vedi trailer)
       
       
       
       
       
      -Esplorazione: Una scuola, una sua succursale ed un intero giardino da esplorare, oltre a due bei dungeon da espugnare. Che volete di più?
       
       
      Gli incontri randomici dei mostri, in particolare, avvengono in seguito all'apparizione di un nemico su mappa, che va prontamente schivato con la pressione di una certa freccia direzionale.
       
       
       
       
       
      Difficoltà:
       
       
      La difficoltà nelle battaglie è autoregolata a seconda della vostra bravura nelle combo e nella tattica.
       
       
       
       
       
      Il punteggio va da 1 a 100 ed aumenta:
       
       
      -In seguito ad una combo corretta
       
       
      -Con la sconfitta di un boss
       
       
       
       
       
      Diminuisce:
       
       
      -Subendo gravi danni
       
       
      -Facendo svenire un compagno
       
       
      -Fuggendo
       
       
       
       
       
      Il tema scolastico:
       
       
      Il tema scolastico è rispecchiato su alcuni fattori del gameplay:
       
       
      -Per imparare tecniche, è necessario studiare dal menù, spendendo punti studio.
       
       
      -il KO qui è sostituito dalla bocciatura, l'avvelenamento dalla "Assenza di appunti"
       
       
      -Tutte le tecniche di battaglia provengono dalle materie scolastiche
       
       
      -Il salvataggio si esegue appoggiando il registro di classe su un tavolo
       
       
      -La modalità ricercA, per ritrovare, ehm... oggetti smarriti.
       
       
       
       
       
      Personaggi:
       
       
       
       
       
       
       
       
       
       
       
       
      Trailer:
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
      Download:
       
       
       
       
       
      https://rpgwaldorf.altervista.org/2d-aperdam-demo/
       
       
      Nota: richiede RTP
       
       
         
    • Da NotSuitableBunch
      Salve a tutti, vi presento il mio primo progetto in Rpg maker, realizzato dopo anni di fatiche e incentrato sul mio vecchio gruppo musicale.
      Visto il tempo che ci ho messo a realizzarlo e la lunghezza del gioco in sè, mi sembrava un peccato farlo giocare solo agli altri del gruppo e alcuni amici,
      spero mi possiate dare un pò di feedback al riguardo!
       
      Download:
      https://mega.nz/file/UQR3TT7R#uuB6QaC4rtpsCPO0DCexAypVZKNOeLA3yCcxTG9UxdA
       
       
      Introduzione
       
      Il gioco è innanzi tutto una parodia trash del genere Jrpg mixata con qualche aspetto di Gta.
      Seguirete le peripezie di un gruppo musicale di ubriaconi che cercano di salvare il loro paesello dalla minaccia di un "cattivo generico".
      Aspettatevi una comicità becera e a tratti offensiva, basata su battutacce, citazioni di videogame più belli, tentativi di satira, movimenti di intestino, infrangimento costante della 4a parete e bestemmie.
      (N.B. Il gioco presenta una forte componente anticlericale che potrebbe infastidire alcuni, e ha un paio di sporadiche scene di nudo, è quindi consigliato a un pubblico adulto.)
       
       

       
       
      In secondo luogo è un'opera molto personale che cerca di racchiudere e riassumere un decennio di suonate con un gruppo di amici. Il gioco è quindi costellato di riferimenti e citazioni che ci riguardano direttamente, per quanto poi esagerati a scopi comici. Spero di aver fatto un buon lavoro nel rendere i personaggi interessanti anche a un pubblico esterno.
       
       
       
      Sviluppo
       
      Il videogame è nato come sfondo per i nostri vecchi concerti nel 2015, proiettato mentre suonavamo e un amico lo giocava live.
      La prima parte di gioco (circa 2-4 ore iniziali) è ancora quella rudimentale Demo (ho inserito una scorciatoia per saltarla nel caso risulti troppo ostica a livello di enigmi, vi avvicinerete così alla parte open-world).
      Ho poi continuato ad espandere il gioco negli anni, a periodi alterni, aggiungendo le varie comparse tra amici e spettatori dei concerti e finendo gli "assets" che avevamo accumulato. Verso fine del 2021 ho iniziato la realizzazione delle quest e della trama del gioco principale; sacrificando buona parte del mio tempo libero sono riuscito a finire in poco più di un anno, dopodichè ho fatto testare il gioco agli altri membri del gruppo e ora, finalmente, direi che è finito.
      Inizio sviluppo Demo: Metà 2015 –> Fine gioco completo: Inizio 2023
       

       
       
       
      Grafica e Gameplay
       
      La grafica di gioco è ottenuta mixando (male) i classici asset di rpg maker con foto di persone e cose reali.
      L'ambientazione è quindi moderna, fatta di strade e case, con un approccio openworld che vuole provare a omaggiare Gta.
       
       

       
       
      Ogni personaggio giocabile e le comparse del gioco sono ottenute con delle foto, stessa cosa per le Animazioni delle mosse in battaglia.
      Per il resto, però, il gameplay di gioco è quello di un jrpg molto base.
      La parte interessante del combattimento è vedere le mosse improbabili dei personaggi.
       
       

       
       
      Una costante nel gioco sarà l'uso di alcolici, i quali rappresentano la fonte di cura del Party mentre girate per il paese.
      L'inizio della parte open world potrebbe essere un pò difficile... Non dimenticate di salvare!
       
       

       
       
      Come longevità il gioco è abbastanza lungo se volete finirlo al 100% (io che sono il programmatore ci metto 30 ore), per finire solo la quest principale invece dovrebbero bastare circa 10-15 ore.
       
       

       
       
       
      Sonoro
       
      La OST del gioco è composta dai brani del nostro gruppo, più i brani delle varie formazioni avute negli anni (con lo stesso gruppo di persone abbiamo fatto diversi progetti musicali).
      Quindi ci sono ore di colonna sonora originale, compresa tutta una sezione di pezzi 8-bittosi fatti da uno di noi appositamente per il gioco.
       

    • Da Hufflepoe
      Sto cercando di capire come consentire al giocatore di selezionare solo il corretto item dall'inventario degli oggetti per uno specifico evento. Faccio un esempio: l'eroe incontra un personaggio e deve consegnargli un oggetto selezionandolo tra quelli raccolti fino a quel momento. Ciò che accade ora è che viene consentito al giocatore di selezionare qualsiasi oggetto nell'inventario tra quelli utilizzabili sempre e che tutti quelli consumabili vengono rimossi dall'inventario una volta selezionati. Io invece vorrei che, nel caso in cui l'oggetto consegnato fosse quello sbagliato, gli altri non venissero rimossi dall'inventario, e che se l'oggetto consegnato fosse quello giusto, invece solo questo fosse rimosso. 
      Mi sembra un meccanismo semplice: se il giocatore sceglie tra i vari oggetti quello giusto e lo consegna, l'evento va a buon fine, altrimenti no. Eppure non riesco a trovare il modo per far girare questo meccanismo.
      Grazie in anticipo per l'aiuto!
       
×