Recent posts

Pages1 2 3 ... 10
1
General Discussion / Re: [RESOLVED][XP]Problem with...
Last post by KK20 - August 26, 2021, 11:41:10 am
When that zero is a float, yes.
2
General Discussion / Re: [RESOLVED][XP]Problem with...
Last post by Blizzard - August 26, 2021, 04:59:48 am
Hm, are you sure dividing by 0 is smart?
3
Tutorial Database / Re: [XP] RMXPAce -- Using the ...
Last post by KK20 - August 21, 2021, 12:44:15 am
Doesn't have to specifically be the steam version, could just be v1.05 in general that does that.
4
Tutorial Database / Re: [XP] RMXPAce -- Using the ...
Last post by kikiki - August 20, 2021, 07:50:54 pm
Hi all! Long time lurker, first time poster.

Has anyone been able to download the 2.34 / latest files from Dropbox? No matter what I try (cleaning caches, trying other browsers etc) I'm unable to download the files.

If anyone has any tips or can offer a mirror dl I'd very much appreciate it! Just got back into rmxp and these updates would be stellar.

Edit: finally got the files to download on mobile.

Now I just get a generic error when I try to playtest a blank / new project:

"The specified procedure could not be found"

There's nothing after that. :/

Edit 2: Even though I'm not using the Steam version, the new DLL keeps being overwritten by the old one after saving, so that seems to be the problem. Instead of using the patcher / launcher method, I went into my program files and replaced the original DLL the engine uses to replace the project ones with. Now it saves with the XP Ace DLL every time.
5
New Projects / Re: Creas
Last post by Ti-Max - August 20, 2021, 02:46:04 pm
Hi guys, I just publish my game "Creas" on the "Steam" and "Itch.io" platforms

https://store.steampowered.com/app/1530040/Creas/

https://ti-max02.itch.io/creas

Feel free to share and give your feedback.

Thank you.
6
General Discussion / Re: CSS Question
Last post by KK20 - August 20, 2021, 01:28:02 am
The absolute closest you can get with just CSS and a textarea alone is to add
white-space: break-spaces;
word-break: break-all;
You will still have one remaining bit of jankiness: when you get close to the right edge and try to add a space after a letter (knowing it will go to the next line), that letter will also move down along with the whitespace character.
7
General Discussion / CSS Question
Last post by Heretic86 - August 18, 2021, 11:06:02 pm
I need to make a Text Area behave like a DOS prompt

Basically so it wraps and spaces are placed like they are in a DOS / CMD window...

This might display a little better...

8
General Discussion / Re: [XP] Problem with error Nu...
Last post by Barabian - August 18, 2021, 07:05:39 am
Thank you for your time. I used this fix and now the error has changed to this:

divided by 0
[0182]ATAN2 FIX:6:in `/'
[0182]ATAN2 FIX:6:in `atan2'
[0165]Sprite Shadow:254:in `update'
...


Edit:
After changing x and y to flat it seems to work fine. Thank you.

module Math
  class << self
    alias fix_atan2_domain_error atan2
    def atan2(y, x)
      if y == 0.0 && x == 0.0
        if 1/x.to_f > 0 # x is 0.0
          return y
        else      # x is -0.0
          return 1/y.to_f > 0 ? Math::PI : -Math::PI
        end
      end
      fix_atan2_domain_error(y, x)
    end
  end
end
9
General Discussion / Re: [XP] Problem with error Nu...
Last post by KK20 - August 18, 2021, 01:01:15 am
It looks like in Ruby 1.9.2, they added domain_errors to the method:
static VALUE
math_atan2(VALUE obj, VALUE y, VALUE x)
{
    double dx, dy;
    Need_Float2(y, x);
    dx = RFLOAT_VALUE(x);
    dy = RFLOAT_VALUE(y);
    if (dx == 0.0 && dy == 0.0) domain_error("atan2");
    if (isinf(dx) && isinf(dy)) domain_error("atan2");
    return DBL2NUM(atan2(dy, dx));
}
https://apidock.com/ruby/v1_9_2_180/Math/atan2/class

From what we can infer from this, @deltax and @deltay are either both (positive or negative) 0.0 or Infinity. I believe it's most likely the former. It's kinda weird why they did this too because in later versions of Ruby they removed it.

What we can do is alias the method so that we can bring it back to how it should behave for this particular case:
module Math
  class << self
    alias fix_atan2_domain_error atan2
    def atan2(y, x)
      if y == 0.0 && x == 0.0
        if 1/x > 0 # x is 0.0
          return y
        else      # x is -0.0
          return 1/y > 0 ? Math::PI : -Math::PI
        end
      end
      fix_atan2_domain_error(y, x)
    end
  end
end
10
General Discussion / [RESOLVED][XP]Problem with err...
Last post by Barabian - August 17, 2021, 04:27:32 am
Hi everyone, I need some help. I am using Rataim's dynamic shadow script, xpace and some others. I haven't had a problem with the shadows until today. I sometimes get the error: "Numerical argument is out of domain -" atan2 "when 2 light source events are moving and I change their speed to 1 first and then back to 4, while they are moving. I change it by using script call $game_map.events[5].move_speed.  These events have a trough and allways on top function; sometimes pass each other or by the player or other events that can be a source of shadow. How I can fix this? When I am not using the event speed change the problem does not occur.

error line: "self.angle      = 57.3 * Math.atan2(@deltax, @deltay)"

script:
#==============================================================================
# ** Sprite Shadow (Sprite_Ombre )
#------------------------------------------------------------------------------
#    Based on Genzai Kawakami's shadows
#    dynamisme & features by Rataime
#    extra features Boushy
#    New Edits by DerVVulfman
#    February 12, 2013
#
#------------------------------------------------------------------------------
#
# Introduction:
#
#  This system allows you and all 'prepared' events to generate shadows while
#  on the field map.  The player can move around  a 'light source' event and
#  display a shadow.  Likewise,  events with a special comment  within their
#  event list can also generate shadows.
#
#------------------------------------------------------------------------------
#
# Instructions:
#
#  -- The Light Source
#    To create a light source, you need to create a map event that is to be
#    used 'as' the light source.  Most of the time,  these could be events
#    that sport 'torch' or 'lantern' charactersets.  Just examples :)
#
#    To make one of these events a light source,  you need  to insert a few
#    things into that event's  "List of Event Commands".  These things are
#    nothing more than comments. 
#
#    The first comment to add is "begin Shadow Source" (without quotes). It
#    informs the system  that this event is a light source.  The remaining
#    three values are optional and have default values in the configuration
#    section  (only just added  into the script).  They too  are added  as
#    comments.
#
#    anglemin 'number'    --- Starting position of a lightsource's arc.
#    anglemax 'number'    --- Ending position of a lightsource's arc.
#    distancemax 'number'  --- How far away from the 'source' you can go
#    self_opacity 'number' --- How dark the shadow will grow.
#
#    After that, your characters can now move about and generate shadows.
#
#  -- Other Events
#    Events do not know that they can generate shadows.  To let them gene-
#    rate a shadow,  all you need to do is add a special comment into their
#    "List of Event Commands".  This comment needed  is merely  the phrase
#    'begin Shadow' (again, without quotes).
#
#
#  -- Blocking Shadows
#    To prevent shadows  from passing through  solid objects such as doors,
#    walls, cabinets or other forms of furniture,  you will want to apply a
#    priority flag of '1' or higher on these items.  Normally, walls in the
#    default database do not have a priority flag as they merely block  the
#    player from passing through.
#   
#
#------------------------------------------------------------------------------
#
# Revisions to note:
#
#  1) Added formatted headers and comments throughout the script.
#  2) Encapsulated a comment/parameter code in an XPML module.
#  3) Set the shadow array into an instance value to lower resource costs.
#  4) Compatability with Near Fantastica's Squad Movement systems.
#  5) Compatability with Ccoa's Caterpillar system.
#  6) Compatability with Trickster's Caterpillar system.
#  7) Added default shadow settings into the configuration section.
#  8) Compatability with DerVVulfman's Lycan ABS.
#
#==============================================================================



  #========================================================================
  #  **  C  O  N  F  I  G  U  R  A  T  I  O  N      S  Y  S  T  E  M  **  #
  #========================================================================
    # Caterpillar Systems
    CATERPILLAR_COMPATIBLE      = true      # Toggle for Fukuyama's original 
    SQUAD_MOVE_COMPATIBLE      = false    # Toggle for Near Fantastica's SBABS
    CCOA_CATER_COMPATIBLE      = false    # Toggle for Ccoa's Caterpillar
    TRICKSTER_CATER_COMPATIBLE  = false    # Toggle for Trickster's Caterpillar
    LYCAN_ABS_COMPATIBLE        = false    # Toggle for DerVVulfman's Lycan ABS
   
    # Shadow Specific Systems
    SHADOW_WARN                = false    # Checks for older shadow system
    SHADOW_MIN                  = 0      # Start setting of shadow arc *
    SHADOW_MAX                  = 0      # Ending setting of shadow arc *
    SHADOW_OPACITY              = 50    # Darkness level of shadow
    SHADOW_DISTANCE            = 500    # Maximum range in pixels

    # * SHADOW ARC:  Set in degrees,  this controls whether a light source
    #                can 'force' shadows in certain directions.  Useful if
    #                a light source is hanging on a wall so it cannot make
    #                a shadow THROUGH a wall.
    #
    #                It may take some practice  to set  the desired angles
    #                as it recognizes 90°  being the  top most part  of an
    #                arc,  180° being the leftmost side and so on...  pro-
    #                ceeding in a counter-clockwise motion.
   
  #========================================================================
  #  ****  E N D  O F  C O N F I G U R A T I O N  S Y S T E M  ****  #
  #========================================================================
 
 

#==============================================================================
# ** 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
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :shadow_spriteset        # holds shadow spritesets
end



#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
#  This class handles the party. It includes information on amount of gold
#  and items. Refer to "$game_party" for the instance of this class.
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :characters
end



#==============================================================================
# ** Sprite_Shadow
#------------------------------------------------------------------------------
#  This sprite is used to display the character's shadow.  It observes the
#  Game_Character class and automatically changes sprite conditions.
#==============================================================================

class Sprite_Shadow < RPG::Sprite
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :character
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    viewport  : viewport
  #    character : character (Game_Character)
  #    id        : id
  #--------------------------------------------------------------------------
  def initialize(viewport, character = nil, id = 0)
    super(viewport)
    params  = $game_temp.shadow_spriteset.shadows[id]
    @source = params[0]
    # Default settings
    @anglemin    = SHADOW_MIN
    @anglemax    = SHADOW_MAX
    @self_opacity = SHADOW_OPACITY
    @distancemax  = SHADOW_DISTANCE
    # Settings changed by parameters
    @anglemin    = params[1]  if params.size > 1
    @anglemax    = params[2]  if params.size > 2
    @distancemax  = params[3]  if params.size > 3
    @self_opacity = params[4]  if params.size > 4
    @daydepend    = params[5]  if params.size > 5 #!
    @character = character
    update
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # If shadow not in range of light source
    if $game_switches[72] == true and $game_switches[125] == false    #EDIT
      if self.opacity >= 0
        self.opacity = 0
        viewport.update
        end
        return
    end                              #<---
    if !in_range?(@character, @source, @distancemax)
      self.opacity = 0
      return
    end
    super
    # If tile ID, file name, or hue are different from current ones
    if @tile_id != @character.tile_id or
      @character_name != @character.character_name or
      @character_hue != @character.character_hue
      # Remember tile ID, file name, and hue
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      # If tile ID value is valid
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
          @tile_id, @character.character_hue)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      # If tile ID value is invalid       
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
    # Set visible situation
    self.visible = (not @character.transparent)
    # If graphic is character
    if @tile_id == 0
      # Set rectangular transfer
      sx = @character.pattern * @cw
      sy = (@character.direction - 2) / 2 * @ch
      if self.angle > 90 or angle < -90
        sy = ( 4 - 2) / 2 * @ch  if @character.direction == 6
        sy = ( 6 - 2) / 2 * @ch  if @character.direction == 4
        sy = ( 8 - 2) / 2 * @ch  if @character.direction == 2
        sy = ( 2 - 2) / 2 * @ch  if @character.direction == 8
      end
      self.src_rect.set(sx, sy, @cw, @ch)
    end
    # Set sprite coordinates   
    self.x = @character.screen_x
    self.y = @character.screen_y-5
    self.z = @character.screen_z(@ch)-1
    # Set blend method and bush depth
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    # Animation
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      animation(animation, true)
      @character.animation_id = 0
    end
    @deltax      = @source.screen_x - self.x
    @deltay      = @source.screen_y - self.y
    self.color    = Color.new(0, 0, 0)
    @distance    = ((@deltax ** 2) + (@deltay ** 2))
    # Set opacity level based on light source distance
    self.opacity  = @self_opacity * 13000 / ((@distance * 370 / @distancemax) + 6000)
    @liczkat      = 57.3 * Math.atan2(@deltax, @deltay)
    self.angle    = @liczkat.to_f
    @angle_trigo  = self.angle+90
    if @angle_trigo < 0
        @angle_trigo = 360 + @angle_trigo
    end
    if @anglemin != 0 or @anglemax != 0
      if (@angle_trigo < @anglemin or @angle_trigo > @anglemax) and
          @anglemin < @anglemax
        self.opacity = 0
        return
      end
      if (@angle_trigo < @anglemin and @angle_trigo > @anglemax) and
          @anglemin > @anglemax
        self.opacity=0
        return
      end   
    end
  end
  #--------------------------------------------------------------------------
  # * In Range?  (From Near's Anti Lag Script, edited)
  #    element    : element
  #    object      : object
  #    range      : range in tiles
  #-------------------------------------------------------------------------- 
  def in_range?(element, object, range)
    x = (element.screen_x - object.screen_x) * (element.screen_x - object.screen_x)
    y = (element.screen_y - object.screen_y) * (element.screen_y - object.screen_y)
    r = x + y
    if r <= (range * range)
      return true
    else
      return false
    end
  end
end



#==============================================================================
# ** Sprite_Character
#------------------------------------------------------------------------------
#  This sprite is used to display the character.It observes the Game_Character
#  class and automatically changes sprite conditions.
#==============================================================================

class Sprite_Character < RPG::Sprite
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias shadow_initialize initialize
  alias shadow_update update 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    viewport  : viewport
  #    character : character (Game_Character)
  #--------------------------------------------------------------------------
  def initialize(viewport, character = nil)
    @character = character
    super(viewport)
    @ombrelist = []
    # If there are no shadows
    if $game_temp.shadow_spriteset.shadows == []
      # Just perform the original call and exit
      return shadow_initialize(viewport, @character)
    end
    # Initialize any Map Event with Shadows
    if character.is_a?(Game_Event)
      params = XPML.XPML_read("Shadow", @character.id, 5)
      if params != nil
        init_char_shadows(character, viewport, Game_Event)
      end
    end
    # Initialize the Player
    init_char_shadows(character, viewport,  Game_Player)
    # Perform the original call
    shadow_initialize(viewport, @character)
  end
  #--------------------------------------------------------------------------
  # * Initialize Character Shadows
  #    character  : character (Game_Character)
  #    viewport  : viewport
  #    char_class : type of character to test
  #--------------------------------------------------------------------------
  def init_char_shadows(character, viewport, char_class)
    if character.is_a?(char_class)
      for i in 0...$game_temp.shadow_spriteset.shadows.size
        @ombrelist.push(Sprite_Shadow.new(viewport, character, i))
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    shadow_update
    if @ombrelist != []
      for i in 0...@ombrelist.size
        @ombrelist[i].update
      end
    end
  end 
end



#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
#  This class deals with events. It handles functions including event page
#  switching via condition determinants, and running parallel process events.
#  It's used within the Game_Map class.
#==============================================================================

class Game_Event < Game_Character
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :id
end



#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  This class brings together map screen sprites, tilemaps, etc.
#  It's used within the Scene_Map class.
#==============================================================================

class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #-------------------------------------------------------------------------- 
  attr_accessor :shadows
  #--------------------------------------------------------------------------
  # * Alias Listings
  #-------------------------------------------------------------------------- 
  alias shadow_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #-------------------------------------------------------------------------- 
  def initialize
    $game_temp.shadow_spriteset = self
    @shadows = []
    warn = false
    for k in $game_map.events.keys.sort
      if ($game_map.events[k].list != nil and
            $game_map.events[k].list[0].code == 108 and
            ($game_map.events[k].list[0].parameters == ["s"] or
            $game_map.events[k].list[0].parameters == ["o"]))
        warn = true       
      end
      params = XPML.XPML_read("Shadow Source", k, 5)
      if params != nil
          $game_temp.shadow_spriteset.shadows.push([$game_map.events[k]] + params)
      end
    end
    if warn == true and SHADOW_WARN
      p "Warning : At least one event on this map uses an obsolete way to add shadows"
    end
    # Perform the original call
    shadow_initialize
  end 
end



#==============================================================================
# ** module XPML
#------------------------------------------------------------------------------
#  This module handles the reading and passing of 'comment' parameters
#
#  The main XPML method is used to check and read event comments.
#  * It returns 'nil' if the markup 'check' text isn't even present.
#  * It returns [] if no parameters are passed
#  * It returns a parameter list with "int" converted as int.
#      eg :
#      begin first
#      begin second
#      param1 1
#      param2 two
#      begin third
#      anything 3
#
#  p XPML_read("first", event_id) -> []
#  p XPML_read("second", event_id) -> [1,"two"]
#  p XPML_read("third", event_id) -> [3]
#  p XPML_read("forth", event_id) -> nil
#===================================================

module XPML
  module_function
  #--------------------------------------------------------------------------
  # * XPML_read
  #    markup          : text in event comment to check
  #    event_id        : event ID
  #    max_param_number : maximum number of parameter/comments to load
  #-------------------------------------------------------------------------- 
  def XPML_read(markup, event_id, max_param_number = 0)
    parameter_list = nil
    event = $game_map.events[event_id]
    return if event.list == nil
      for i in 0...event.list.size
        if event.list[i].code == 108 and
          event.list[i].parameters[0].downcase == "begin " + markup.downcase
          parameter_list = [] if parameter_list == nil
          for j in i + 1...event.list.size
            if event.list[j].code == 108
              parts = event.list[j].parameters[0].split
              if parts.size != 1 and parts[0].downcase != "begin"
                if parts[1].to_i != 0 or parts[1] == "0"
                  parameter_list.push(parts[1].to_i)
                else
                  parameter_list.push(parts[1])
                end
              else
                return parameter_list
              end
            else
              return parameter_list
            end
            if max_param_number != 0 and j == i + max_param_number
              return parameter_list
            end
          end
        end
      end
    return parameter_list
  end
end
Pages1 2 3 ... 10