Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Prosty mechanizm ruchu w 8 kierunkach
Autor Wiadomość
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Pią 02 Lis, 2012 00:16
Prosty mechanizm ruchu w 8 kierunkach
~ Prosty mechanizm ruchu w 8 kierunkach / Simple 8-Directional Movement ~


Krótki opis:
Skrypt pozwala na poruszanie się w ośmiu kierunkach. Podczas ruchu na skos może być używana dodatkowa grafika, ale nie musi.

Autor:
Jet (Jet10985)

Tłumaczenie:
Avara

Skrypt:
Spoiler:

Kod:
#===============================================================================
# Prosty mechanizm 8-kierunkowego ruchu / Simple 8-Directional Movement
# Autor: Jet10985 (Jet)
# Tłumaczenie: Avara
#===============================================================================
# Skrypt ten umożliwia graczowi poruszanie się po przekątnej, jeśli naciśnie
# dwa przyciski kierunkowe (strzałki) w tym samym czasie.
# Przyciski są w tym samym czasie.
# Skrypt ten posiada: 2 opcje konfiguracji.
#===============================================================================
# Nadpisane metody:
# Brak
#-------------------------------------------------------------------------------
# Dopiski do metod:
# Game_Player: increase_steps, move_(up, left, down, right)
#===============================================================================

module Jet8Dir
 
  # Czy chcesz aby była wykorzystywana dodatkowa grafika podczas ruchu gracza
  # po przekątnej?
  USE_8DIR_SPRITES = true          # true - tak ; false - nie
 
  # Jeśli powyższa opcja jest ustawiona na true, wówczas podczas ruchu po
  # przekątnej, wykorzystywana jest grafika przypisana do ID pierwszej postaci
  # w drużynie. Przypisujemy dodatkową grafikę do postaci w następujący sposób:
  # ID_postaci => ["nazwa grafiki", ID_grafiki]
  # Po każdej takiej linijce kodu (oprócz ostatniej) musisz wstawić przecinek.
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # Od Avary: Dodatkowe grafiki umieść w folderze Graphics/Characters.
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  DIAG_CHAR_SPRITES = {
 
  1 => ["$DiagSprite (1)", 0],     # przecinek
  2 => ["$DiagSprite (2)", 0]      # brak przecinka (ostatnia linijka)
 
  }
 
end

#===============================================================================
# DALEJ NIE EDYTUJ, CHYBA ŻE WIESZ CO ROBISZ!
#===============================================================================
class Game_Player
 
  attr_accessor :diag_walk
 
  %w[move_up move_down move_left move_right].each {|a|
    aStr = %Q{
      alias jet9031_#{a} #{a} unless $@
      def #{a}(*args, &block)
        @diag_walk = false
        jet9031_#{a}(*args, &block)
      end
    }
    eval(aStr)
  }
 
  def move_by_input
    return unless movable?
    return if $game_map.interpreter.running?
    case Input.dir8
    when 1;  move_lower_left
    when 2;  move_down
    when 3;  move_lower_right
    when 4;  move_left
    when 6;  move_right
    when 7;  move_upper_left
    when 8;  move_up
    when 9;  move_upper_right
    end
  end
 
  alias jet6742_increase_steps increase_steps unless $@
  def increase_steps(*args, &block)
    jet6742_increase_steps(*args, &block)
    @diag_walk ||= false
    update_diag_sprite
  end
   
  def move_lower_left(*args, &block)
    @diag_walk = passable?(self.x - 1, self.y + 1)
    super(*args, &block)
    @direction = 2
    if @move_failed
      move_down
      move_left(false) unless $game_map.interpreter.running?
    end
  end
 
  def move_lower_right(*args, &block)
    @diag_walk = passable?(self.x + 1, self.y + 1)
    super(*args, &block)
    @direction = 6
    if @move_failed
      move_down
      move_right(false) unless $game_map.interpreter.running?
    end
  end
 
  def move_upper_left(*args, &block)
    @diag_walk = passable?(self.x - 1, self.y - 1)
    super(*args, &block)
    @direction = 4
    if @move_failed
      move_up
      move_left(false) unless $game_map.interpreter.running?
    end
  end
 
  def move_upper_right(*args, &block)
    @diag_walk = passable?(self.x + 1, self.y - 1)
    super(*args, &block)
    @direction = 8
    if @move_failed
      move_up
      move_right(false) unless $game_map.interpreter.running?
    end
  end
 
  def update_diag_sprite
    return unless Jet8Dir::USE_8DIR_SPRITES
    if @diag_walk
      f = Jet8Dir::DIAG_CHAR_SPRITES
      set_graphic(*f[$game_party.members[0].id]) rescue nil
    else
      f = $game_party.members[0]
      set_graphic(f.character_name, f.character_index)
    end
  end
end


Screeny:
Spoiler:



Dodatkowe informacje:
Zamieszczam link do paczki dodatkowych grafik 32 podstawowych postaci z RPG Makera VX do powyższego skryptu autorstwa Vibrato.
http://www.mediafire.com/?q3m52dr5r56382h
Podstawa do stworzenia własnej grafiki:
Spoiler:

________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
Nex 




Preferowany:
RPG Maker XP

Pomógł: 15 razy
Dołączył: 27 Paź 2012
Posty: 145
Wysłany: Nie 04 Lis, 2012 16:14
A czy inne eventy też się mogą tak poruszać?
 
 
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Nie 04 Lis, 2012 16:26
Event w tym makerze zawsze mógł się poruszać na skos, ale bez dodatkowych grafik. Ten skrypt też tego nie umożliwia.
________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
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