Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Map Slide
Autor Wiadomość
bartek2940 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 10 Kwi 2010
Posty: 88
Wysłany: Czw 28 Kwi, 2011 18:51
Map Slide
Skrypt sprawia, że Ekran "ześlizguje się" z jednej mapy na drugą (głupio brzmi, ale świetnie wygląda). Trochę go przetłumaczyłem (instrukcję).
Nie daje screenów, bo nie ma jak, ale na dole jest demo.
SKRYPT
Spoiler:

Kod:
#==============================================================================
# Map Slide
#==============================================================================
# Author  : OriginalWij
# Version : 1.1
#==============================================================================

#==============================================================================
# NOTE: Tylko najnowsza wersja jest wersją obsługiwaną.
#
# v1.1
# - naprawiony bug z wielkością mapy
# - dodano jakąś opcję przewijania krawędzi
#==============================================================================

#==============================================================================
#
# Aby "przewijać" w nazwie mapy wpisujemy:
# Nazwę mapy [MET ID_Mapy_Dolnej ID_Mapy_Lewej ID_Mapy_Prawej ID_Mapy_Górnej] np.:
# Wyspa [MET 1 2 3 4]
# Jeśli ma nie przewijać wpisujemy ID 0 (zero)
#==============================================================================

#==============================================================================
# Konfiguracja
#==============================================================================

module OW_MAP_SLIDE
  # Przełącznik (ID) WYŁĄCZAJĄCY Skrypt
  DISABLE_SWITCH = 1
  # Szybkość przesuwania się mapy (domyślnie 4)
  SLIDE_SPEED = 4
  # Włączanie krawędzi (tego dotyczy poprawka wersji v1.1, ale nie znam zastosowania) (domyślnie True)
  MAP_EDGE = true
end

#==============================================================================
# Niżej nie tykaj!
#==============================================================================
#==============================================================================
# Game_Temp
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # Public Instance Variables                                           (New)
  #--------------------------------------------------------------------------
  attr_accessor :scroll
  attr_accessor :no_trigger
  attr_accessor :slide_x
  attr_accessor :slide_y
  #--------------------------------------------------------------------------
  # Initialize                                                          (Mod)
  #--------------------------------------------------------------------------
  alias ow_mapslide_game_temp_initialize initialize unless $@
  def initialize
    ow_mapslide_game_temp_initialize
    @scroll = @no_trigger = false
    @slide_x = @slide_y = 0
  end
end

#==============================================================================
# Game_Map
#==============================================================================

class Game_Map
  #--------------------------------------------------------------------------
  # Map Name                                                            (New)
  #--------------------------------------------------------------------------
  def map_name
    return load_data("Data/MapInfos.rvdata")[@map_id].name
  end
end

#==============================================================================
# Game_Character
#==============================================================================

class Game_Character
  #--------------------------------------------------------------------------
  # Public Instance Variables                                           (New)
  #--------------------------------------------------------------------------
  attr_accessor :real_x
  attr_accessor :real_y
end

#==============================================================================
# Game_Player
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # Determine if Same Position Event is Triggered                       (Mod)
  #--------------------------------------------------------------------------
  alias ow_mapslide_game_player_ceth check_event_trigger_here unless $@
  def check_event_trigger_here(triggers)
    if $game_temp.no_trigger
      $game_temp.no_trigger = false
      return false
    end
    ow_mapslide_game_player_ceth(triggers)
  end
  #--------------------------------------------------------------------------
  # Processing of Movement via input from the Directional Buttons       (Mod)
  #--------------------------------------------------------------------------
  alias ow_mapslide_game_player_move_by_input move_by_input unless $@
  def move_by_input
    return unless movable?
    return if $game_map.interpreter.running?
    if self.x == 0 or self.x == ($game_map.width - 1) or self.y == 0 or
        self.y == ($game_map.height - 1) and OW_MAP_SLIDE::MAP_EDGE
      dir = $game_player.direction
      map_id = [0] * 9
      $game_map.map_name.scan(/\[MET (\d+) (\d+) (\d+) (\d+)\]/i)
      map_id[2] = $1.to_i if self.y == ($game_map.height - 1)
      map_id[4] = $2.to_i if self.x == 0
      map_id[6] = $3.to_i if self.x == ($game_map.width - 1)
      map_id[8] = $4.to_i if self.y == 0
      if map_id[dir] == 0
        ow_mapslide_game_player_move_by_input
        return
      end
      x = $game_player.x
      y = $game_player.y
      new_map = load_data(sprintf("Data/Map%03d.rvdata", map_id[dir]))
      case dir
      when 2; y = 0
      when 4; x = (new_map.width - 1)
      when 6; x = 0
      when 8; y = (new_map.height - 1)
      end
      $game_player.reserve_transfer(map_id[dir], x, y, dir)
    else
      $game_temp.no_trigger = false
      ow_mapslide_game_player_move_by_input
    end
  end
end

#==============================================================================
# Sprite_Character
#==============================================================================

class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # Update                                                              (Mod)
  #--------------------------------------------------------------------------
  alias ow_mapslide_sprite_character_update update unless $@
  def update
    ow_mapslide_sprite_character_update
    if $game_temp.scroll
      self.x = @character.screen_x + $game_temp.slide_x
      self.y = @character.screen_y + $game_temp.slide_y
      if @character.is_a?(Game_Player)
        self.x -= $game_temp.slide_x / 16
        self.y -= $game_temp.slide_y / 16
      end
    end
  end
end

#==============================================================================
# Spriteset_Map
#==============================================================================

class Spriteset_Map
  #--------------------------------------------------------------------------
  # Public Instance Variables                                           (New)
  #--------------------------------------------------------------------------
  attr_accessor :tilemap
  attr_accessor :picture_sprites
end

#==============================================================================
# Scene_Map
#==============================================================================

class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # Player Transfer Processing                                          (Mod)
  #--------------------------------------------------------------------------
  alias ow_mapslide_scene_map_upd_tr_player update_transfer_player unless $@
  def update_transfer_player
    if $game_switches[OW_MAP_SLIDE::DISABLE_SWITCH]
      ow_mapslide_scene_map_upd_tr_player
    else
      return unless $game_player.transfer?
      w = Graphics.width
      h = Graphics.height
      speed = OW_MAP_SLIDE::SLIDE_SPEED
      $game_player.real_y += 28 if $game_player.direction == 8
      @spriteset.update
      $game_temp.scroll = true
      @hold = Sprite.new
      @hold.bitmap = Graphics.snap_to_bitmap
      @hold.z = 1
      if $game_player.in_vehicle?
        $game_map.vehicles[$game_player.vehicle_type].transparent = true
      else
        $game_player.transparent = true
      end
      @spriteset.dispose
      $game_player.perform_transfer
      $game_map.autoplay
      $game_map.update
      @spriteset = Spriteset_Map.new
      case $game_player.direction
      when 2
        @spriteset.tilemap.oy += h + ($game_map.height * 32 - h) * 2
        $game_temp.slide_x = 0
        $game_temp.slide_y = h
        for i in 0...h / speed
          @hold.oy += speed
          @spriteset.tilemap.oy += speed
          $game_temp.slide_y -= speed
          @spriteset.update_characters
          Graphics.update
        end
      when 4
        @spriteset.tilemap.ox -= w + ($game_map.width * 32 - w) * 2
        $game_temp.slide_x = -w
        $game_temp.slide_y = 0
        for i in 0...w / speed
          @hold.ox -= speed
          @spriteset.tilemap.ox -= speed
          $game_temp.slide_x += speed
          @spriteset.update_characters
          Graphics.update
        end
      when 6
        @spriteset.tilemap.ox += w + ($game_map.width * 32 - w) * 2
        $game_temp.slide_x = w
        $game_temp.slide_y = 0
        for i in 0...w / speed
          @hold.ox += speed
          @spriteset.tilemap.ox += speed
          $game_temp.slide_x -= speed
          @spriteset.update_characters
          Graphics.update
        end
      when 8
        @spriteset.tilemap.oy -= h + ($game_map.height * 32 - h) * 2
        $game_temp.slide_x = 0
        $game_temp.slide_y = -h
        for i in 0...h / speed
          @hold.oy -= speed
          @spriteset.tilemap.oy -= speed
          $game_temp.slide_y += speed
          @spriteset.update_characters
          Graphics.update
        end
      end
      @hold.bitmap.dispose
      @hold.dispose
      Input.update
      case $game_player.direction
      when 2
        $game_player.real_y -= 256
      when 4
        $game_player.real_x += 256
      when 6
        $game_player.real_x -= 256
      when 8
        $game_player.real_y += 256
      end
      $game_temp.no_trigger = true
      if $game_player.in_vehicle?
        $game_map.vehicles[$game_player.vehicle_type].transparent = false
      else
        $game_player.transparent = false
      end
      $game_temp.scroll = false
    end
  end
end


DEMO


Ktoś inny miał go wrzucić, ale postanowiłem to zrobić odrobinę wcześniej.
________________________
Obecny projekt - Chwilowo brak
 
 
 
Bleach 




Preferowany:
RPG Maker XP

Dołączył: 28 Kwi 2011
Posty: 2
Wysłany: Czw 28 Kwi, 2011 20:40
Ciekawe... Mi by się to przydało...
Czy umiałbyś to zmienić na XP? Albo może ktoś inny?
________________________
KLIKNIJ TUTAJ
 
 
bartek2940 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 10 Kwi 2010
Posty: 88
Wysłany: Czw 28 Kwi, 2011 21:21
Nie, nie jestem skrypterem, może ktoś inny ci pomoże.
________________________
Obecny projekt - Chwilowo brak
 
 
 
Poster27 




Preferowany:
RPG Maker VX

Pomógł: 22 razy
Dołączył: 27 Kwi 2010
Posty: 136
Skąd: że znowu
Wysłany: Czw 09 Cze, 2011 21:50
Wielkie dzięki! Nie widziałem tego skryptu wcześniej i wygląda ciekawie. Na pewno użyję ;D
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene