Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - MetalZelda

1
General Discussion / Solarus, Engine for A-RPG
November 06, 2015, 09:51:51 am
This is bad that no one has post something about it, yet I know that this engine is not this well known here but here ya go.

Solarus, yeah, sounds strange for a engine. But what is it ?

Solarus has started being developped in 2006 by Christopho for Zelda : Mystery of Solarus DX (ultra close to ALTTP gameplay), it is written in C++ and can run LUA code for user-quests. At first the engine was pretty hard to master and a little bit limited, but today, the engine feature a well crafted map editor / script editor, a online documentation and a growing community.

Plus, the engine's code (c++) is totally open source, so it mean that you can hard code stuffs in c++ and recompile, it was ported to Android, GCW Zero. Compile tutorial is also on their page.

The thing is, if you're a good programmer, you can make a lot of extraordinary things in LUA (or C++), not only A-RPG, but all kinds of things.

If you are interested, you can check here.
http://www.solarus-games.org/

And hope that people will, maybe do some games with this engine  :naughty:

2
Hi

I wanna ask someone to port a VX script to VX ace, it is a Widescreen script. This was done by XRXS, it works in VX ace only if you delete a lot of lines in the script and so some scenes aren't widescreened properly.
This is the script, if anyone is interested by porting this script, it would be awesome

# ¤¤¤ XRXSv1. ƒI[ƒgƒŠƒTƒCƒU[^ƒƒCƒh ¤¤¤
#
# publish 2010/ 3/ 2
# update     -   /27
#
#
# ‰æ-ʃTƒCƒYÝ'è
 Graphics.resize_screen(640, 416)
#
#
#==============================================================================
# Ý'è
#==============================================================================
class Game_System
 attr_accessor :wide_screen
end
#==============================================================================
# ƒEƒBƒ"ƒhƒEƒTƒCƒYŽ©"®'²®
#==============================================================================
module XRXSV1_WindowResizeIntruding
 def initialize(x, y, width, height)
   original_width = width
   x_minus    = 0
   width_over = (x + width > 544 ? x + width - 544 : 0)
   if x < 0
     x_minus = x
     x = 0
   end
   x        = x      + ((Graphics.width  - 544) * x      / 544)
   y        = y      + ((Graphics.height - 416) * y      / 416)
   if not self.is_a?(Window_Command) or self.is_a?(Window_TargetEnemy)
     width -= width_over
     width += x_minus
     width  = width  + ((Graphics.width  - 544) * width  / 544.0).ceil
     width -= x_minus
     width += width_over
     height = height + ((Graphics.height - 416) * height / 416.0).ceil
   end
   x += x_minus
   if $game_system.wide_screen
     m = [(Graphics.width - width) / 4, width / 4].min
     unless self.is_a?(Window_Command)
       m = (width - original_width) if (width - m) < original_width
     end
     width -= m
     n      = [x / 4, m] .min
     x     += n
   end
   super(x, y, width, height)
 end
end
class Window_Selectable < Window_Base
 include XRXSV1_WindowResizeIntruding
end
class Window_SaveFile < Window_Base
 include XRXSV1_WindowResizeIntruding
end
class Window_Help < Window_Base
 include XRXSV1_WindowResizeIntruding
end
class Window_SkillStatus < Window_Base
 include XRXSV1_WindowResizeIntruding
end
class Window_Status < Window_Base
 include XRXSV1_WindowResizeIntruding
end
class Window_NumberInput < Window_Base
 include XRXSV1_WindowResizeIntruding
end
class Window_EquipStatus < Window_Base
 include XRXSV1_WindowResizeIntruding
end
class Window_ShopStatus < Window_Base
 include XRXSV1_WindowResizeIntruding
end
class Window_Gold < Window_Base
 include XRXSV1_WindowResizeIntruding
end
#==============================================================================
# ƒƒCƒh•â³ [Ä'è‹`]ŠÜ,Þ
#==============================================================================
module XRXSV1_SpriteinWide
 def initialize(viewport)
   super(viewport)
   self.zoom_x = 0.75 if $game_system.wide_screen
 end
end
class Sprite_Battler < Sprite_Base
 include XRXSV1_SpriteinWide
end
class Sprite_BattleFloor < Sprite_Base #¦
 include XRXSV1_SpriteinWide
end
class Game_Picture
 alias xrxsv1_zoom_x zoom_x
 def zoom_x
   return xrxsv1_zoom_x * ($game_system.wide_screen ? 3 : 4) / 4
 end
end
class Window_Base < Window
 def draw_actor_name(actor, x, y)
   width = [self.contents.text_size(actor.name).width+2, 108].min
   width = width * ($game_system.wide_screen ? 3 : 4) / 4
   self.contents.font.color = hp_color(actor)
   self.contents.draw_text(x, y, width, WLH, actor.name)
 end
 def draw_actor_class(actor, x, y)
   width = [self.contents.text_size(actor.class.name).width+2, 108].min
   width = width * ($game_system.wide_screen ? 3 : 4) / 4
   self.contents.font.color = normal_color
   self.contents.draw_text(x, y, width, WLH, actor.class.name)
 end
 def draw_actor_level(actor, x, y)
   width = 32 * ($game_system.wide_screen ? 3 : 4) / 4
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, width, WLH, Vocab::level_a)
   self.contents.font.color = normal_color
   self.contents.draw_text(x + width, y, width * 3 / 4, WLH, actor.level, 2)
 end
 def draw_item_name(item, x, y, enabled = true)
   if item != nil
     width = [self.contents.text_size(item.name).width+2, 172].min
     width = width * ($game_system.wide_screen ? 3 : 4) / 4
     draw_icon(item.icon_index, x, y, enabled)
     self.contents.font.color = normal_color
     self.contents.font.color.alpha = enabled ? 255 : 128
     self.contents.draw_text(x + 24, y, width, WLH, item.name)
   end
 end
end
class Window_Command < Window_Selectable
 def draw_item(index, enabled = true)
   rect = item_rect(index)
   rect.x += 4
   rect.width -= 8
   self.contents.clear_rect(rect)
   self.contents.font.color = normal_color
   self.contents.font.color.alpha = enabled ? 255 : 128
   rect.width = self.contents.text_size(@commands[index]).width
   rect.width = rect.width * ($game_system.wide_screen ? 3 : 4) / 4
   self.contents.draw_text(rect, @commands[index])
 end
end
#==============================================================================
# [Ä'è‹`]
#==============================================================================
class Game_Map
 def scroll_down(distance)
   if loop_vertical?
     @display_y += distance
     @display_y %= @map.height * 256
     @parallax_y += distance
   else
     last_y = @display_y
     @display_y = [@display_y + distance, (height * 32 - Graphics.height) * 8].min
     @parallax_y += @display_y - last_y
   end
 end
 def scroll_right(distance)
   if loop_horizontal?
     @display_x += distance
     @display_x %= @map.width * 256
     @parallax_x += distance
   else
     last_x = @display_x
     @display_x = [@display_x + distance, (width * 32  - Graphics.width) * 8].min
     @parallax_x += @display_x - last_x
   end
 end
end
class Game_Player < Game_Character
 CENTER_X = (Graphics.width  / 2 - 16) * 8     # ‰æ-Ê'†‰›,Ì X À•W * 8
 CENTER_Y = (Graphics.height / 2 - 16) * 8     # ‰æ-Ê'†‰›,Ì Y À•W * 8
 def center(x, y)
   display_x = x * 256 - CENTER_X                    # À•W,ðŒvŽZ
   unless $game_map.loop_horizontal?                 # ‰¡,Ƀ‹[ƒv,µ,È,¢H
     max_x = ($game_map.width * 32  - Graphics.width) * 8            # Å'å'l,ðŒvŽZ
     display_x = [0, [display_x, max_x].min].max     # À•W,ðC³
   end
   display_y = y * 256 - CENTER_Y                    # À•W,ðŒvŽZ
   unless $game_map.loop_vertical?                   # c,Ƀ‹[ƒv,µ,È,¢H
     max_y = ($game_map.height * 32 - Graphics.height) * 8           # Å'å'l,ðŒvŽZ
     display_y = [0, [display_y, max_y].min].max     # À•W,ðC³
   end
   $game_map.set_display_pos(display_x, display_y)   # •\Ž¦ˆÊ'u•ÏX
 end
end
class Spriteset_Map
 def create_viewports
   @viewport1 = Viewport.new(0, 0, Graphics.width, Graphics.height)
   @viewport2 = Viewport.new(0, 0, Graphics.width, Graphics.height)
   @viewport3 = Viewport.new(0, 0, Graphics.width, Graphics.height)
   @viewport2.z = 50
   @viewport3.z = 100
 end
end
class Spriteset_Battle
 def create_viewports
   @viewport1 = Viewport.new(0, 0, Graphics.width, Graphics.height)
   @viewport2 = Viewport.new(0, 0, Graphics.width, Graphics.height)
   @viewport3 = Viewport.new(0, 0, Graphics.width, Graphics.height)
   @viewport2.z = 50
   @viewport3.z = 100
 end
 def create_battleback
   source = $game_temp.background_bitmap
   bitmap = Bitmap.new(640, 480)
   bitmap.stretch_blt(bitmap.rect, source, source.rect)
   #bitmap.radial_blur(90, 12)
   @battleback_sprite = Sprite.new(@viewport1)
   @battleback_sprite.bitmap = bitmap
   @battleback_sprite.ox = 320
   @battleback_sprite.oy = 240
   @battleback_sprite.x = Graphics.width  / 2
   @battleback_sprite.y = Graphics.height / 2 #(352 * Graphics.height / 416) / 2
   #@battleback_sprite.wave_amp = 8
   #@battleback_sprite.wave_length = 240
   #@battleback_sprite.wave_speed = 120
 end
 def create_battlefloor
   @battlefloor_sprite = Sprite_BattleFloor.new(@viewport1) # ¦
   @battlefloor_sprite.bitmap = Cache.system("BattleFloor")
   @battlefloor_sprite.x = Graphics.width / 2
   @battlefloor_sprite.y = (192 * Graphics.height / 416)
   @battlefloor_sprite.z = 1
   @battlefloor_sprite.ox = @battlefloor_sprite.bitmap.width / 2
   @battlefloor_sprite.opacity = 128
   @battlefloor_sprite.zoom_x = @battlefloor_sprite.zoom_x * Graphics.width / 544
 end
end
class Scene_Battle < Scene_Base
 def create_info_viewport
   x = 128 * Graphics.width  / 544
   y = 288 * Graphics.height / 416
   w = Graphics.width
   h = 128 * Graphics.height / 416
   @info_viewport = Viewport.new(0, y, w, h)
   @info_viewport.z = 100
   @status_window = Window_BattleStatus.new
   @party_command_window = Window_PartyCommand.new
   @actor_command_window = Window_ActorCommand.new
   @status_window.viewport = @info_viewport
   @party_command_window.viewport = @info_viewport
   @actor_command_window.viewport = @info_viewport
   @status_window.x = x
   @actor_command_window.x = Graphics.width
   @info_viewport.visible = false
 end
 def update_info_viewport
   x = 128 * Graphics.width / 544
   @party_command_window.update
   @actor_command_window.update
   @status_window.update
   if @party_command_window.active and @info_viewport.ox > 0
     @info_viewport.ox = [@info_viewport.ox - 16, 0].max
   elsif @actor_command_window.active and @info_viewport.ox < x
     @info_viewport.ox = [@info_viewport.ox + 16, x].min
   end
 end
end
#==============================================================================
# [ƒGƒCƒŠƒAƒX] 'Ç‹L•"•ª
#==============================================================================
class Game_Troop < Game_Unit
 alias xrxsv1_setup setup
 def setup(troop_id)
   xrxsv1_setup(troop_id)
   for enemy in @enemies
     enemy.screen_x = (enemy.screen_x * Graphics.width  / 544)
     enemy.screen_y = (enemy.screen_y * Graphics.height / 416)
   end
 end
end
class Scene_Item < Scene_Base
 alias xrxsv1_hide_target_window hide_target_window
 def hide_target_window
   xrxsv1_hide_target_window
   @viewport.rect.set(0, 0, Graphics.width, Graphics.height)
 end
 alias xrxsv1_show_target_window show_target_window
 def show_target_window(right)
   xrxsv1_show_target_window(right)
   w = @viewport.rect.width - 544 + Graphics.width
   @viewport.rect.set(@viewport.rect.x, 0, w, Graphics.height)
   @target_window.x = right ? w : 0
 end
end
class Scene_Skill < Scene_Base
 alias xrxsv1_hide_target_window hide_target_window
 def hide_target_window
   xrxsv1_hide_target_window
   @viewport.rect.set(0, 0, Graphics.width, Graphics.height)
 end
 alias xrxsv1_show_target_window show_target_window
 def show_target_window(right)
   xrxsv1_show_target_window(right)
   w = @viewport.rect.width - 544 + Graphics.width
   @viewport.rect.set(@viewport.rect.x, 0, w, Graphics.height)
   @target_window.x = right ? w : 0
 end
end
class Scene_Title < Scene_Base
 alias xrxsv1_create_title_graphic create_title_graphic
 def create_title_graphic
   xrxsv1_create_title_graphic
   bitmap = Bitmap.new(Graphics.width, Graphics.height)
   bitmap.stretch_blt(bitmap.rect, @sprite.bitmap, @sprite.bitmap.rect)
   @sprite.bitmap = bitmap
 end
 alias xrxsv1_create_command_window create_command_window
 def create_command_window
   xrxsv1_create_command_window
   @command_window.x = (Graphics.width  - @command_window.width)  / 2
   @command_window.y = (Graphics.height - @command_window.height) - 32
 end
end
class Scene_End < Scene_Base
 alias xrxsv1_create_command_window create_command_window
 def create_command_window
   xrxsv1_create_command_window
   @command_window.x = (Graphics.width  - @command_window.width)  / 2
   @command_window.y = (Graphics.height - @command_window.height) / 2
 end
end
class Scene_Equip < Scene_Base
 alias xrxsv1_create_item_windows create_item_windows
 def create_item_windows
   xrxsv1_create_item_windows
   for i in 0...EQUIP_TYPE_MAX
     y = @item_windows[i].y
     y = y + ((Graphics.height - 416) * y / 416)
     @item_windows[i].y = y
     height = @item_windows[i].height
     height = height + ((Graphics.height - 416) * height / 416)
     @item_windows[i].height = height
   end
 end
end
#==============================================================================
# --- ƒQ[ƒ€ƒI[ƒo[‰æ'œˆø,«L,Î,µ‹@"\ ---
#==============================================================================
class Scene_Gameover < Scene_Base
 alias xrxsv1_create_gameover_graphic create_gameover_graphic
 def create_gameover_graphic
   xrxsv1_create_gameover_graphic
   @sprite.zoom_x = 1.0 * Graphics.width  / @sprite.bitmap.width
   @sprite.zoom_y = 1.0 * Graphics.height / @sprite.bitmap.height
 end
end


Cheers
3
Hi
Is there's any performance benefits if I wanna turn common event that use parallel process into a single script ?
If yes, I wanna learn how to turn common event into a script.


Common Event
Spoiler: ShowHide
Start

The whole system


Thanks
4
Hello.

As I moved to VXAce engine for my Zelda game (gosh the performances are here), I need someone to modify this script, this is basically a Zelda Hud script made by Moghunter.

The script + demo :
http://www.atelier-rgss.com/RGSS/Demos/U_Hud_Zelda.zip

The thing is, I want this script to use 4 HP for 1 heart like moderns Zelda

So instead of these



I want these


Thanks in advance
5
Script Requests / [Idea] "Heat Effect" with FOGS
November 15, 2014, 08:14:12 am
Hoy !

So I came up with this idea long time ago but I forget to post it here.
My idea is to create a post "shading effect" consisting of a heat effect, and it is, generally, a bitmap distortion, as know as fast waving effect.

Heretic86 (zecomeia) ported a VX Ace feature in XP that allow bitmaps waving -> http://forum.chaos-project.com/index.php?topic=13549.0

So my idea is to add the waving effect function in the fog plane, as fogs is in top of every layers it can make the effect working without problems, I guess ...

Multifogs script should be the script to start with.

Kk, I might be crazy but to me it's far possible for any scripters, zecomeia already does the major thing.
Thanks for reading
6
Solved, I actually do my best to display all picture on teh screen

Hello everyone, this topic isn't really a script request bit instead it is a question
Is there's a way to show a static rotating picture just like a NPC, I mean, without scrolling with the camera ?
7
Hello everyone

Today I've managed to make a map that act list a Zelda Lost woods, it is managed with variables.
But I have a great and unexplained problem coming along with this.

Here is the map.



The test sign display the current value of variable 61 that handle the process.
The starting value I set for the variable is 8 and decrease if the player take the good path.
If the player take the wrong path it increase to 8 and only this work.

the 1st path works well, 6-6 = 2 times left but when I go up where the variable should decrease to 5 it doesn't work, it's stuck at 6

This is the faulty event, though I just CTRLC CTRL V and modified the value from the event on the right.

Teh event



Thanks in advance :)
8
General Discussion / [VX Ace]Somes questions about it
August 31, 2014, 02:58:41 pm
Hello again :D

So I was experiencing some meth experiments with VX Ace, I came up with some questions.

1 - How does parallax mapping works ?
I searched through Google for some tutorials but they seems to be a mess to understand and I really want to try this feature and to figure how layers are managed in Parallax

2 - What's the difference between Parallax and Panorama ?
They looks the same, and if yes, is there a way to use a parallax and a panorama in a same map ?

3 - I didn't fount any fog in the editor, is this feature still in Ace ?

Thanks for the answers :)
9
Hi,

I was testing around RPG Maker VX Ace and I was trying to push it's limit over to finally have some slowdowns (dams that's harder than XP ...)
And then I cane out with MGC tilemap rewrite + map zoom feature in a script.

But, the script doesn't even zoom, I tried script call, comment, etc, it always give this error "undefined method zoom_map in MGC:Module", even if you don't call zoom_map.

The weirdest thing is that it doesn't give the fully detailled error ... That's pretty weird to design a Map zoom that doesn't even work, and that's from MGC ...

The demo itself only have a opacity control for the map, but no map zoom, even if it is mentionned ...
http://www.mediafire.com/download/yuyikznndhdmbvx/%5BVXA%5DMGC_Tilemap_Ace_V1.4.exe


Thanks for help
10
HelHoy

So I was messing around to make a little script that can handle a sound effect and a character sprite looping in a certain case.

The sprite mechanism works well, but the sound effect is a mess to do, it always return an error (Undefined method '+' for Nil nilclass) and the error is pointing this certain code  (@waitcount_se += 1)

#===============================================================================
# ■ LOW_LIFE_ANIMATION
#===============================================================================
#If Link's HP is under 40 (1 heart), change his charset if he's not moving after 15 frames
module LOW_LIFE_ANIMATION
 #Suffix of the spriteset
 LOW_LIFE = "_LOWANI"
 #Wait count when he's standing still and seems hurt
 WCOUNT = 15
 #Here, add the sound when Link is suffering
 SE = RPG::AudioFile.new('Link_Huff1', 100)
 
#--------------------------------------------------------------------------
# ● Sound effect initialize - FAULTY
#--------------------------------------------------------------------------  
 alias lowlife_setup_init initialize unless $@
 def initialize
@waitcount_se = 0
lowlife_setup_init
 end
#--------------------------------------------------------------------------
# ● Character Name
#--------------------------------------------------------------------------                                  
 def character_name
   filename = super
for i in 0...$game_party.actors.size
   actor = $game_party.actors[i]
   if @breakacting and not $game_system.map_interpreter.running? & if actor.hp * 100 / actor.maxhp <= 40
      new_name = filename + LOW_LIFE
      filename = new_name if RPG_FileTest.character_exist?(new_name)
   end
end
end
   return filename
 end

#--------------------------------------------------------------------------
# ● Breakact
#--------------------------------------------------------------------------                                
def breakact=(b)
    @breakacting = b
    @step_anime  = b
end

#--------------------------------------------------------------------------
# ● Update  
#--------------------------------------------------------------------------
alias idontknow_update update unless $@
 def update
     super
     if controllable?
        if @breakact_count.to_i > 0
           @breakact_count -= 1
        else
           self.breakact = true
        end

#################################" Faulty
@waitcount_se += 1
if @waitcount_se > WCOUNT
@waitcount_se = 0
end
 if @step_anime and @waitcount_se = 14
Audio.se_play("Audio/SE/" + LOW_LIFE_ANIMATION::SE, 100, 100) rescue nil
end
##################################"
     else
       @breakact_count = WCOUNT
       unless self.action != nil or $game_map.starting? or
              self.knockbacking?
              self.breakact = false
       end
     end
 idontknow_update
 end
end


#===============================================================================
# ■ Game_Player < Game_Character
#===============================================================================
class Game_Player < Game_Character
     include LOW_LIFE_ANIMATION
end

#===============================================================================
# ■ Game_Player
#===============================================================================
class Game_Player < Game_Character
 
#--------------------------------------------------------------------------
# ● Controllable?  
#--------------------------------------------------------------------------                          
 def controllable?  
     return false if @actor == nil
     return false if moving?
     return false if @move_route_forcing or $game_temp.message_window_showing
     return false if $game_system.map_interpreter.running?
     return false if self.action != nil
     return false if self.battler.stop
     return false if @character_name != @actor.character_name
     return false if terrain_tag == XAS::FALL_TERRAIN
 return false if terrain_tag == XAS::SWIMMING_TERRAIN
 for i in 0...$game_party.actors.size
 actor = $game_party.actors[i]
 return false if actor.hp * 100 / actor.maxhp > 40
 end
     return true
 end
end

$LOW_LIFE_ANIMATION = true


I don't know what I fucked up here ...
11
Script Requests / [Request] Moving Platform
August 17, 2014, 02:02:12 pm
Hello peps,

As you know RPG Maker XP (with teh help of eventing) allows the maker to make a moving platform.
XAS include a moving platform script that doesn't really satisfy me, it allows only to move the player to a predefined route but you can't move because it's a 32x32 only event.

RPG Maker VX Ace's Victor script have a moving platform that allow free movement while the platform is moving and it's much more cool, and with my project's progression i can't reimport and rewrite everything

Here's a video with a link to the vx ace script, i really hope someone would make this mechanism a reality in RPG Maker XP

https://www.youtube.com/watch?v=cNCFaYnOr1M
12
Script Requests / [RPG XP]Unlimited Picture
June 29, 2014, 09:38:47 am
Because fuck the 50 picture limit :facepalm:

Why hello there.
Everything is in the title, is there a script that float around here (I googled, etc but no answer) that can break the 50 pictures limit RPG Maker XP have .?
Draco had a script that allow us to set a picture in a sub-folder, why not taking this script as a starting point ?
13
Hmmm, I don't know if someone would actually do it, but I suck in converting script ...
There we go. This script right here is to save an event position even if you go to another map. It's much more useful than having parallel process and switches to handle a new event position. Saving switches, and even some Framerate depending on how many things to memorize.

But, I only found a script that is VX Ace compatible, and need someone to convert into a regular RMXP one, it would be useful for many other makers using RPG Maker XP.

Here's the script, and I hope someone convert it for the communauty ^^

#--------------------------------------------------
# Remember Event Position 1.0
#--------------------------------------------------
#
# Author: Shaz
#
# Description: This script lets you set the position and direction
#              where an event will appear next time the map is
#              loaded.  Events will appear in this new position
#              rather than the place they were put during design.
#
#--------------------------------------------------
#
# Installation:
#
# Copy into a new script slot in the Materials section
#
#--------------------------------------------------
#
# Use:
#
# Examples below show syntax for an Event Command on an Event Tab.
#   You can use @event_id for the current event, or specify an event number.
# To execute from within a Set Move Route command, omit the
#   $game_map.events[@event_id]. part, and just use save_pos() and forget_pos().
#
# To tell an event to move to its current position the next time
# the map is loaded, execute the following in a script call:
#   $game_map.events[@event_id].save_pos()
#
# To tell an event to move to a particular position (not its
# current position) the next time the map is loaded,
# execute the following in a script call:
#   $game_map.events[@event_id].save_pos(1, 2, 8)
# - the above will move the event to x=1, y=2, facing up
#
# To tell an event to forget its previously remembered position
# and go back to its default position the next time time map
# is loaded, execute the following in a script call:
#   $game_map.events[@event_id].forget_pos()
#--------------------------------------------------

class Game_System
 alias shaz_mem_position_gs_init initialize

 attr_accessor :event_positions

 def initialize
   shaz_mem_position_gs_init
   @event_positions = {}
 end
end

# Check to ensure $game_system.event_positions exists (save files created
# prior to this script being added would not have it initialized)
class Game_Map
 alias shaz_mem_positions_gm_init initialize

 def initialize
   shaz_mem_positions_gm_init
   $game_system.event_positions = {} if !$game_system.event_positions
 end
end

class Game_CharacterBase
 attr_accessor
end

class Game_Event
 alias shaz_mem_position_gcb_init initialize

 def initialize(map_id, event)
   shaz_mem_position_gcb_init(map_id, event)

   if $game_system.event_positions.has_key?([map_id, @id])
     mvx, mvy, mvdir = $game_system.event_positions[[map_id, @id]]
     moveto(mvx, mvy)
     set_direction(mvdir) if mvdir
     @stop_count = 0
     refresh
   end
 end

 def save_pos(x = @x, y = @y, dir = @direction)
   $game_system.event_positions[[@map_id, @id]] = [x, y, dir]
 end

 def forget_pos
   $game_system.event_positions.delete([@map_id, @id])
 end
end
14


Hello everyone, yeah that's my first time I'm posting my project here so I can have new feedback compared to other forums. And knowing that here there are 'professional' makers. Well pardon me if you don't clearly understand, but I'm French and I'm trying as hard as I can do to write in correct English without translator.

Okay, so, here's my game I'm working on since 2011, called The Legend of Zelda : Eternal Struggle. This project was on every Zelda Engine imaginable for RPG Maker XP. And now I'm using the Project Zelda Engine powered with XAS ABS 3.91 Hero Edition.

First of all, let me thank some person that helped me in this project :
    - SilentResident, Baffou, ChakanEvil, MaximusMaxy, NightRunner, Jon Bon : Project Zelda Engine Staff
    - Blizzard : Some of his script was and still are useful, even with XAS
    - Jibtou : Gameplay, and some art
    - Daru13 : HUD design
    - LittleDrago : Same for Blizzard, his script are plug and play for XAS, most of them.
    - You, who's reading this : for wasting your time to read the thread.
    - Zeth, DeathBasket : Gave me motivation for this project, and give me some advice. RIP their project.
    - Zephir : Hosting the video with me
    - Euclid : Maker of Parallel World, which was my starting base fot this project.
    - Zelda Solarus Team : Help
    - Some Youtubers for the musics used
    - Enterbrain for RPG Maker
    - Moghunter for XAS (Even if I want XAS 4 SO BAD)
    - Nintendo : For the Zelda Franchise
    - Mah friends : Give me advices

~~Introduction~~

The Legend of Zelda : Eternal Struggle was, first a little project to determine my skills at RPG Maker and game making in general.
It turned drastically in a huge and ambitious project back in 2011, when 1 night, I was talking with a friend that told me his idea about how he would see a fan game about Zelda.
It is, for me a big tribute to the Zelda series, as the game took most of all Zelda in 1 game for the moment.
I'm not going to hide it, but the development of the game is very frustrating, as it is for every maker I guess. So that's why sometimes it took times for me to update. But I really hope that this project would interest some players. Zelda fan or not.
For this game, I'm really concerned and focusing in Gameplay part. Because a game isn't great for the graphics, it is great for the gameplay and the environment. 

~~Story~~

At the dawn of their 12th anniversary, all young boy, receive the Hero's Tunic, made by their best friend. It was Link's Birthday, and he received a Hero Tunic from Byrna, his best friend. Everything was calm and peaceful. Until Link's Uncle, Talon tell Link about his bad feelings he has earlier. Next morning, Link goes to help the farmer of Timoria's Village, and finish his day by seeing Byrna at the Water Source.
Next day, Link have to fight monsters that appeared last night. Talon was right. Link have to find a sword to fight all of these monsters. And next morning, Byrna got kidnapped, Vaati send Link to the Forbidden Jail and kill Talon. The quest for finding Byrna begin.
But surprise ... Zelda got kidnapped by Ganondorf after Link recover all 3 Sacred Crystals.
Before that, Zelda tells you that before finding Byrna, you have to be accepted by the 3 goddess by recovering all 8 medallions. And restore the Sacred Blade : The Eternal Sword to ban Vaati and Ganondorf once and for all, and that was the reason they kidnapped Byrna.

~~Characters~~
Who doesn't know Zelda Characters ?

Spoiler: ShowHide


Link : The main hero of the game, and of Zelda Series in general. His goal is to go into dungeon, beat bosses, and recover peace by facing the evil.


Spoiler: ShowHide

Vaati : One of the villain of the game


Spoiler: ShowHide

Talon : He always wakes you up, and he trains Link for learning how to Master the sword, unless he dies


Spoiler: ShowHide

Smith : He's the Blacksmith of the Village


Spoiler: ShowHide

Byrna : Link's Best Friend


Spoiler: ShowHide

The King of Hyrule : Daphné Termina Enderson II


Spoiler: ShowHide

Aria : The Miss I know everything ... She tells you what you need to know, she's useful for some path finding such as the 1st dungeon entrance


Spoiler: ShowHide

Sage : Anciant guardians of Hyrule that would help Link to send Ganondorf and Vaati in the Sacred Realm at the very end.


Spoiler: ShowHide

Ganondorf : Main villain of the game, responsive of everything.


Spoiler: ShowHide

Epona : Link's Companion, rescued by Romani after being send in the jail by Vaati



~~General~~

The Dungeon List - Note : Not done yet means that they are not made yet, but they are drawn in some sheets.
Spoiler: ShowHide
 

   - Forbidden Jail (Only 1 visit, after you can't re-enter it) -> Infiltration, sorta -> DONE

Sacred Crystal Quest
   - Forsaken Wood -> DONE
   - Goron's Sanctuary -> WIP
   - Zora's Cavern -> WIP

   - Hyrule Castle 1st visit -> 80% DONE

Medalion Quest
   - Temple of the Woods -> Not Started Yet
   - Fire Temple -> WIP
   - Earth Temple -> NOT STARTED YET
   - Water Temple -> BARELY STARTED -> Prototype
   - Tower of Judgement -> WIP
   - Shadow Temple -> NOT STARTED YET
   - City in the Sky -> 40% DONE
   - Light Temple -> 20% DONE
   
To the end (Listed as a group but it's 1 dungeon splitted in 3 parts) - Not done yet
   - Dark Hyrule Castle
   - The Purgatory (Refight EVERY boss to get off this dark area and then fight Ganon)
   - Hyrule Castle Tower

Side Quest Dungeon : - Not Done Yet
   - Dungeon of Rememberance -> ALTTP Dungeon remaked into the game
   - Deku Tree -> Hidden Temple in a Hidden Place



~~Screenshot / Video / Trailers~~

Video :
Spoiler: ShowHide












ScreenShots (Various state from development)
Spoiler: ShowHide






Who is this girl ... Meh, here she act like a placeholder, but she have a use in the begining of the game, important ...

One of a minigame : Retro World















Release Date : End 2014 - February 2015
15
Hello everyone
Okay so I don't know if this was asked before, or else ...

Well, All I want is a event that follow another event in a scripting or eventing way, all result I found was RPG VX Ace scripts, and some was using the Move Straight Method but didn't succeed well.

I don't really know what to do, this special thing would allow extended boss making or NPC interraction for example
If someone have the solution, or have time to convert this script, it would be cool


=begin
==============================================================================
** FP: Move Routes
Author: Tsukihime
Date: Aug 17, 2012
------------------------------------------------------------------------------
** Change log
Sep 3
  -added support for "compass-based" movement.
Aug 17
  -fixed bug where custom move route causes freezing
Jul 8
  -fixed bug where retrieving character on map was flawed
May 17
  -Initial release
------------------------------------------------------------------------------
Extends the move route system by providing more options.
Acessible through move route scripts

You can specify a sequence of move commands by typing a
move-string

  moves("UDUDLRLR3R3R3L3L")
   
U means up
D means down
L means left
R means right.

For diagonal movement, use the following
Q is upper-left
W is upper-right
A is lower-left
S is lower-right

You can also specify some movement behavior.
They all take an event ID corresponding to the
event ID on the game map

  move_toward_event (event_id)
  move_from_event (event_id)
  turn_toward_event (event_id)
  turn_from_event (event_id)
 
You can also play a balloon animation

  show_balloon(anim_id, event_id)
 
0 is the event itself (can be omitted)
-1 is the player
other event ID's are events on the map

Compass-based movement uses the compass directions to determine which
direction to move. For example

 North direction = up
    move_north = up
    move_south = down
   
 North direction = left
    move_north = left
    move_south = right
   
The following methods are available

  set_north(direction)
    -takes a numerical direction (2, 4, 6, 8) to specify the north dir
     
  move_north(count)
  move_south(count)
  move_west(count)
  move_east(count)
  turn_north
  turn_west
  turn_east
  turn_south
 
Where `count` is the number of times you want to move in that direction
==============================================================================
=end
$imported = {} if $imported.nil?
$imported["FP_MoveRoutes"] = true
#==============================================================================
# ** Configuration.
#==============================================================================
module Feature_Plus
 module Move_Routes
   
   Move_String = /(\d*)([UDLRQWAS])/
 end
end
#==============================================================================
# ** Rest of the script.
#==============================================================================

class Game_Character < Game_CharacterBase
 include Feature_Plus::Move_Routes
 
 alias :fp_move_route_init_private_members :init_private_members
 def init_private_members
   fp_move_route_init_private_members
   @northDir = 8
   @jump_distance = 1
   @follow_distance = 0
 end
 
 def add_move(move_route, dir, num=1)
   num.times do |i|
     move_route.list.insert(move_route.list.size - 1, RPG::MoveCommand.new(dir))
   end
 end
 
 def get_character(id)
   if id < 0
     $game_player
   else
     $game_map.events[id > 0 ? id : @id]
   end
 end
 
 def show_animation(anim_id, event_id=0)
   character = get_character(event_id)
   return unless character    
   character.animation_id = anim_id
 end
 
 def show_balloon(anim_id, event_id=0)
   character = get_character(event_id)
   return unless character
   character.balloon_id = anim_id
 end
 #--------------------------------------------------------------------------
 # * Define move route using move string
 #--------------------------------------------------------------------------
 def moves(string)
   move_route = RPG::MoveRoute.new
   cmds = string.scan(Move_String)
   cmds.each do |cmd|
     num = cmd[0].empty? ? 1 : cmd[0].to_i rescue 1
     case cmd[1]
     when "U"; code = ROUTE_MOVE_UP
     when "D"; code = ROUTE_MOVE_DOWN
     when "L"; code = ROUTE_MOVE_LEFT
     when "R"; code = ROUTE_MOVE_RIGHT
     when "Q"; code = ROUTE_MOVE_UPPER_L
     when "W"; code = ROUTE_MOVE_UPPER_R
     when "A"; code = ROUTE_MOVE_LOWER_L
     when "S"; code = ROUTE_MOVE_LOWER_R
     end
     add_move(move_route, code, num)
   end
   # replace the script call
   @move_route.list.delete_at(@move_route_index)
   @move_route.list.insert(@move_route_index, *move_route.list[0...-1])
   @move_route_index -= 1
 end

 def move_pos(x, y)
   sx = distance_x_from(x)
   sy = distance_y_from(y)
   if sx.abs > 0
     move_straight(sx > 0 ? 4 : 6)
     move_straight(sy > 0 ? 8 : 2) if !@move_succeed && sy.abs != 0
   elsif sy.abs > 0
     move_straight(sy > 0 ? 8 : 2)
     move_straight(sx > 0 ? 4 : 6) if !@move_succeed && sx.abs != 0
   end
 end
 
 #--------------------------------------------------------------------------
 # * Convenience methods
 #--------------------------------------------------------------------------
 def move_down(count)
   count.times { move_straight(2)}
 end
 
 def move_left(count)
   count.times { move_straight(4)}
 end
 
 def move_right(count)
   count.times { move_straight(6)}
 end
 
 def move_up(count)
   count.times { move_straight(8)}
 end
 
 #--------------------------------------------------------------------------
 # * 4-dir compass-based movement, based on the which direction is "north".
 #--------------------------------------------------------------------------
 
 def set_north(direction)
   @northDir = direction
 end
 
 def move_north(count=1)
   case @northDir
   when 2
     move_down(count)
   when 4
     move_left(count)
   when 6
     move_right(count)
   when 8
     move_up(count)
   end
 end
 
 def move_west(count=1)
   case @northDir
   when 2
     move_right(count)
   when 4
     move_down(count)
   when 6
     move_up(count)
   when 8
     move_left(count)
   end
 end
 
 def move_east(count=1)
   case @northDir
   when 2
     move_left(count)
   when 4
     move_up(count)
   when 6
     move_down(count)
   when 8
     move_right(count)
   end
 end
 
 def move_south(count=1)
   case @northDir
   when 2
     move_up(count)
   when 4
     move_right(count)
   when 6
     move_left(count)
   when 8
     move_down(count)
   end
 end
 
 def turn_north
   case @northDir
   when 2
     set_direction(2)
   when 4
     set_direction(4)
   when 6
     set_direction(6)
   when 8
     set_direction(8)
   end
 end
 
 def turn_east
   case @northDir
   when 2
     set_direction(4)
   when 4
     set_direction(8)
   when 6
     set_direction(2)
   when 8
     set_direction(6)
   end
 end
 
 def turn_west
   case @northDir
   when 2
     set_direction(6)
   when 4
     set_direction(2)
   when 6
     set_direction(8)
   when 8
     set_direction(4)
   end
 end
 
 def turn_south
   case @northDir
   when 2
     set_direction(8)
   when 4
     set_direction(6)
   when 6
     set_direction(4)
   when 8
     set_direction(2)
   end
 end
 
 #--------------------------------------------------------------------------
 # * Move toward event, by event id
 #--------------------------------------------------------------------------
 def move_toward_event(event_id)
   event = get_character(event_id)
   move_toward_character(event)
 end
 #--------------------------------------------------------------------------
 # * Move away from event, by event id
 #--------------------------------------------------------------------------
 def move_from_event(event_id)
   event = get_character(event_id)
   move_away_from_character(event)
 end
 #--------------------------------------------------------------------------
 # * Turn toward event, by event id
 #--------------------------------------------------------------------------
 def turn_toward_event(event_id)
   event = get_character(event_id)
   turn_toward_character(event)
 end
 #--------------------------------------------------------------------------
 # * Turn away from event, by event id
 #--------------------------------------------------------------------------
 def turn_from_event(event_id)
   event = get_character(event_id)
   turn_away_from_character(event)
 end
 
 def mt_event(evt_id)
   move_toward_event(evt_id)
 end
 
 def mf_event(evt_id)
   move_from_event(evt_id)
 end
 
 def tt_event(evt_id)
   turn_toward_event(evt_id)
 end
 
 def tf_event(evt_id)
   turn_from_event(evt_id)
 end
end
16
Script Requests / [XP]Heart Refiling script
December 01, 2013, 11:05:34 am
I don't know if this can be useful for many people, but for things like Zelda it should be better than restore all command ...

Well, everything is in the title, I'm requesting a script that can refill heart to the hero and stop when it reach the max heart ...
I'm ready to see some comments like (use add_hp +1 and wait 1 frame but it dont compute the amount of heart the hero currently have(max_hp))

It might be easy to make, and thus, can be XAS, BABS and other engines compatible ...
I wrote the code in a notepad (see bellow), but I need help, I don't have enough time because of school and I need help for doing it ...
The code would work in 2 ways, 1st, the script would be autonomous and 2nd a script call would make the thing to work ...

Code written in a notepad :

module name
hp_to_add = 1
waitcount = 1
se = RPG::AudioFile.new('Heartadd.wav',100)
def initialize
waitcount = 0
end
def heart_refill
if actor_hp != max_hp
hp += hp_to_add
wait(waitcount)
if waitcount = 4
Audio.se_play(se)
waitcount = 0
end
if hp == max_hp
break
end
end

It maybe suck but it resume what I want xD
Thanks for the person who do this :)
17
Hello everybody,
Maybe my subject isn't clear enough, but I attempted to make this as an event but I didn't succeed ...
The XAS behaviour of the mechanism is already made, all I remain is the mechanism itself ...

Description :
When the player press a letter (Letter I want is listed bellow), 2 pictures hanfling cutscene bars would appear and the hero would be forced to be in Fix Direction with another sprite and another speed. If he isn't moving, nothing would happen, but, if he press the direction  he's facing before Fix Direction and the C input on the keyboard, he'll do a Jump Slash attack (XAS comes with a action caller, and the jump slash behaviour is already made)
BUT if he press another direction, he would jump 2 tiles away, with sprite change ...

Actual ressources I have made for this :
- Jump slash (XAS script and config)
- Cutscene pictures
- Sprites

And would it be possible for this script to be a standalone script instead of  a script that's incorpored within XAS

Please understand that it's not the Zelda Z-target system, I know it's impossible to recreate, but I want the jump attack system thing as I described above, if you don't understand well, just check in Zelda Ocarina of Time, Press Z and do a sword slashing with A ... I want someone to create it (Drago is the most XAS friendly xD, or maybe someone else)

Picture to explain clearly


Thanks in advance :)
Your lovely and crazy MetalZelda xD
18
Hello everybody :)
I'm not very active in the forum and it's bad because of reasons xD
Well, technically, I'm switching my Zelda project from XAS ABS to BlizzABS and seems to be easy for the moment, but something is troubling me ...

I found in the Internet a script that allow map zooms, and which is really great for gameplay thing and cutscenes, and I badly want this script to work.
It is a script that only work this the fuc**** useless SDK, which is both XAS and Blizz incompatible.

Blizzard, you ungrateful nice sexy administrator, or someone else, please make some makers dream true ...

Please, can you make this shit to be a regular RPG Maker XP script instead of a non-working XAS & blizz SDK support

Script bellow :
=begin
==============================================================================
** Map_Zoom
------------------------------------------------------------------------------
Trebor777
Version 1.1
14/06/2007
------------------------------------------------------------------------------
* Description FR:

Ce script permet d'effectuer des zoom in et zoom out sur un point pr?cis de
la map.

* Description US:

This script allow you to zoom in or out on a specific map location.

------------------------------------------------------------------------------
* Instructions FR:

Placer le Script sous le SDK et au dessus de Main.
Utiliser 1 des 2 commandes dans un script ou un ?v?nement "appeler un script":
. $game_map.start_zoom(x,y,coef,spd)
. $scene.zoom(x,y,coef,spd) #avec $scene une instance de Scene_Map

x et y: Coordonn?es(pas en pixel) du point ? zoomer/d?zoomer
coef : Valeur du zoom ? atteindre de 0.1, ? l'infini
spd : Vitesse du zoom, la variation est bas?e sur le calcul suivant:
0.2*spd

* Instructions US:

Place The Script Below the SDK and Above Main.
Use 1 of this 2 command in a script or with the event command "Call a script":
. $game_map.start_zoom(x,y,coef,spd)
. $scene.zoom(x,y,coef,spd) #with $scene a Scene_Map instance

x & y: Target Location(not inpixel)to zoom in/out
coef : Zoom value to reach from 0.1, to infinite
spd : Zoom speed, the fluctuation is based on this formula: 0.2*spd

Version 1.1
Code adapted to the new tilemap class.
==============================================================================
=end
#------------------------------------------------------------------------------
# * SDK Log Script
#------------------------------------------------------------------------------
SDK.log('Map_Zoom', 'Trebor777', 1.1, '14-06-2007')

#------------------------------------------------------------------------------
# * Begin SDK Enable Test
#------------------------------------------------------------------------------
if SDK.state('Map_Zoom') and SDK.state('Tilemap')

#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
def update_character_sprites
# Update character sprites
for sprite in @character_sprites
sprite.zoom_x=$game_map.tilemap_settings.zoom_x
sprite.zoom_y=$game_map.tilemap_settings.zoom_y
sprite.update
end
end
end
#==============================================================================
# ** Scene_Map
#==============================================================================
class Scene_Map
def zoom(x,y,coef,spd)
if !$game_map.zooming?
$game_map.start_zoom(x,y,coef,spd)
end
end
end
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
alias zoom_setup_scroll setup_scroll
def setup_scroll
setup_zoom
zoom_setup_scroll
end
#--------------------------------------------------------------------------
def setup_zoom
# Initialize scroll information
@zoom_rest = 0
@zoom_speed = 2
end
#--------------------------------------------------------------------------
# * Start Zoom
# focus : zoom value to reach
# speed : zoom speed
#--------------------------------------------------------------------------
def start_zoom(x,y,focus, speed)
@x_zoom=x
@y_zoom=y
@zoom_rest = (focus-@tilemap_settings.zoom_x).abs
@zoom_speed = speed*((focus-@tilemap_settings.zoom_x)/@zoom_rest)
end
#--------------------------------------------------------------------------
# * Determine if Scrolling
#--------------------------------------------------------------------------
def zooming?
return @zoom_rest > 0
end
#--------------------------------------------------------------------------
alias zoom_update_scrolling update_scrolling
def update_scrolling
update_zooming
zoom_update_scrolling
end
#--------------------------------------------------------------------------
def update_zooming
# If zooming
if @zoom_rest > 0
# Change from zoom speed to focus in map coordinates
focus = 0.2 * @zoom_speed
# Execute zooming
@tilemap_settings.zoom_x =focus
@tilemap_settings.zoom_y =focus
# Subtract focus zoomed
@zoom_rest -= focus.abs
$game_player.center(@x_zoom,@y_zoom)
end
end
#--------------------------------------------------------------------------
# * Scroll Down
# distance : scroll distance
#--------------------------------------------------------------------------
def scroll_down(distance)
@display_y = [@display_y distance, (self.height*@tilemap_settings.zoom_y - 15) * 128/tilemap_settings.zoom_y].min
end
#--------------------------------------------------------------------------
# * Scroll Left
# distance : scroll distance
#--------------------------------------------------------------------------
def scroll_left(distance)
@display_x = [@display_x - distance, 0].max
end
#--------------------------------------------------------------------------
# * Scroll Right
# distance : scroll distance
#--------------------------------------------------------------------------
def scroll_right(distance)
@display_x = [@display_x distance, (self.width*@tilemap_settings.zoom_x - 20) * 128/tilemap_settings.zoom_x].min
end
#--------------------------------------------------------------------------
# * Scroll Up
# distance : scroll distance
#--------------------------------------------------------------------------
def scroll_up(distance)
@display_y = [@display_y - distance, 0].max
end
end
#==============================================================================
# ** Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# * Get Screen X-Coordinates
#--------------------------------------------------------------------------
def screen_x
# Get screen coordinates from real coordinates and map display position
#return (@real_x) / 4 # 16
return (@real_x - $game_map.display_x 3*$game_map.tilemap_settings.zoom_x) / 4*$game_map.tilemap_settings.zoom_x 16*$game_map.tilemap_settings.zoom_x
end
#--------------------------------------------------------------------------
# * Get Screen Y-Coordinates
#--------------------------------------------------------------------------
def screen_y
# Get screen coordinates from real coordinates and map display position
y = (@real_y - $game_map.display_y 3*$game_map.tilemap_settings.zoom_y) / 4*$game_map.tilemap_settings.zoom_y 32*$game_map.tilemap_settings.zoom_y
# Make y-coordinate smaller via jump count
if @jump_count >= @jump_peak
n = @jump_count - @jump_peak
else
n = @jump_peak - @jump_count
end
return y - (@jump_peak * @jump_peak - n * n) / 2
end
#--------------------------------------------------------------------------
# * Get Screen Z-Coordinates
#--------------------------------------------------------------------------
def screen_z(height = 0)
# If display flag on closest surface is ON
if @always_on_top
# 999, unconditional
return 999
end
# Get screen coordinates from real coordinates and map display position
z = (@real_y - $game_map.display_y 3*$game_map.tilemap_settings.zoom_y) / 4*$game_map.tilemap_settings.zoom_y 32*$game_map.tilemap_settings.zoom_y
# If tile
if @tile_id > 0
# Add tile priority * 32
return z $game_map.priorities[@tile_id] * 32*$game_map.tilemap_settings.zoom_y
# If character
else
# If height exceeds 32, then add 31
return z ((height > 32) ? 31 : 0)
end
end
end
#==============================================================================
# ** Game_Player
#==============================================================================
class Game_Player < Game_Character
@center_x= CENTER_X # Center screen x-coordinate * 4
@center_y = CENTER_Y # Center screen y-coordinate * 4
#--------------------------------------------------------------------------
# * Scroll Down
#--------------------------------------------------------------------------
def update_scroll_down(last_real_y)
# If character moves down and is positioned lower than the center
# of the screen
if @real_y > last_real_y and @real_y - $game_map.display_y > @center_y
# Scroll map down
$game_map.scroll_down(@real_y - last_real_y)
end
end
#--------------------------------------------------------------------------
# * Scroll Left
#--------------------------------------------------------------------------
def update_scroll_left(last_real_x)
# If character moves left and is positioned more let on-screen than
# center
if @real_x < last_real_x and @real_x - $game_map.display_x < @center_x
# Scroll map left
$game_map.scroll_left(last_real_x - @real_x)
end
end
#--------------------------------------------------------------------------
# * Scroll Right
#--------------------------------------------------------------------------
def update_scroll_right(last_real_x)
# If character moves right and is positioned more right on-screen than
# center
if @real_x > last_real_x and @real_x - $game_map.display_x > @center_x
# Scroll map right
$game_map.scroll_right(@real_x - last_real_x)
end
end
#--------------------------------------------------------------------------
# * Scroll Up
#--------------------------------------------------------------------------
def update_scroll_up(last_real_y)
# If character moves up and is positioned higher than the center
# of the screen
if @real_y < last_real_y and @real_y - $game_map.display_y < @center_y
# Scroll map up
$game_map.scroll_up(last_real_y - @real_y)
end
end
#--------------------------------------------------------------------------
# * Set Map Display Position to Center of Screen
#--------------------------------------------------------------------------
def center(x, y)
@center_x= (320/$game_map.tilemap_settings.zoom_x - 16) * 4 # Center screen x-coordinate * 4
@center_y = (240/$game_map.tilemap_settings.zoom_y - 16) * 4 # Center screen y-coordinate * 4
max_x = ($game_map.width*$game_map.tilemap_settings.zoom_x - 20) * 128/$game_map.tilemap_settings.zoom_x
max_y = ($game_map.height*$game_map.tilemap_settings.zoom_y - 15) * 128/$game_map.tilemap_settings.zoom_y
$game_map.display_x = ([0, [x * 128 - @center_x, max_x].min].max)
$game_map.display_y = ([0, [y * 128 - @center_y, max_y].min].max)
end
end
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end


Thanks, in advance
19
Welcome! / Greetings from a Zelda fan ^^
June 13, 2013, 08:11:56 pm
Hello communauty !

I'm new (seriously?) and here's my presentation :

I'm a 17 Years old boy that like pizzas and chocolates and I live in France... I'm also making a Zelda game with Xiderow's XAS ABS (Project Zelda Engine, but an altered and custom version with more scripts to fit in my game). The game name is Zelda Eternal Struggle, it was started 2 years ago (when I was 15 yo /. ... Obviously xD)

I'm not kidding, you'll maybe think "Ah, he's 17, his game would suck because he don't have good mapping skills, etx"
Video answer : http://www.youtube.com/watch?v=azvUHZDfKY4

I really like the communauty, so peaceful and very diversified ...
I hope I would have my place over here  ^^
And if you want I post my game here, in the section.

-MetalZelda