Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Lune Frontal Battle System
Autor Wiadomość
Saskio 




Preferowany:
RPG Maker VXAce

Pomógł: 1 raz
Dołączył: 20 Sie 2012
Posty: 51
Skąd: Włocławek
Wysłany: Sro 29 Sie, 2012 05:02
Lune Frontal Battle System
~ Lune Frontal Battle System ~


Krótki opis:
Świetny system walki, przeznaczony dla początkujących (Prawie nie trzeba edytować :-D )
Ja osobiście uważam ten system za użyteczny i prawdopodobnie będę go używał w nadchodzącym projekcie(o nie, nie... projekt to TAJEMNICA :-D )

Autor:
Raizen

Tłumaczenie:
Saskio

Kompatybilność:
RPG Maker VX Ace

Skrypt:
Spoiler:

Kod:
#=======================================================
#         Lune Frontal Battle System
# Autor: Raizen
# Tłumaczenie: Saskio
# Specjalnie dla Ultimateam.pl
# Kompatybilne z: RMVXAce
#=======================================================

# Instrukcja:
# Plug n' play, wklej skrypt nad 'Main' w edytorze skryptów.
#=======================================================

# Konfiguracja

module Lune_Frontal_Battle
# Grafiki nieżywych bohaterów.
# Aby dodać nowe postacie, po prostu przepisz kod:
# DeadG[1] = "Monster1", Numerek jeden oznacza ID bohatera, a "Monster1" to
# grafika nieżywej postaci.

DeadG = []

DeadG[1] = "Monster1"
DeadG[2] = "Monster1"
DeadG[3] = "Monster1"
DeadG[4] = "Monster1"
DeadG[5] = "Monster1"
DeadG[6] = "Monster1"
DeadG[7] = "Monster1"
DeadG[8] = "Monster1"
DeadG[9] = "Monster1"

# Umiejętności na bliski dystans, pamiętaj: ID_1 jest normalnym atakiem,
# i to będzie uważane jako normalny atak.
Dist = [1, 3, 4, 10, 21, 80, 81, 85, 100]

# Bronie dystansowe
# Pamiętaj, te numerki to są ID KLASY, nie ID BRONI!!!
Weapdist = [6, 10]

# Skille nie używane.
Nocast = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 80, 76, 77, 78, 85,
81, 83, 84, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 99, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
86, 100]

# ID Animacji Użycia (np. potiona)
Castid = 43
# Czas animacji.
Casttime = 20
end

#==============================================================================
# ==================  Nie edytuj dalej, chyba, że wiesz co robisz!  ===========
#==============================================================================

#==============================================================================
# Reescrita dos seguintes métodos
#  ==> Scene_Battle <==
# show_normal_animation
#  ==> Game_Actor <==
# use_sprite?
#==============================================================================

#==============================================================================
# Alias dos seguintes métodos

# ==> Scene_Battle <==
# update_basic
# start
# start_actor_command_selection
# dispose_spriteset

# ==> Game_Actor <==
# initialize
#==============================================================================

#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de batalha.
#==============================================================================

class Scene_Battle < Scene_Base
 
  #--------------------------------------------------------------------------
  # * Aliasing
  #--------------------------------------------------------------------------
alias lune_front_update update_basic
alias lune_front_start start
alias lune_front_start_actor_command start_actor_command_selection
alias lune_front_dispose dispose_spriteset
   
  #--------------------------------------------------------------------------
  # * Inicializaç&#227;o do processo
  #--------------------------------------------------------------------------
  def start
    create_battlers
    lune_front_start
  end
  #--------------------------------------------------------------------------
  # * Atualizaç&#227;o das tropas
  #--------------------------------------------------------------------------
  def update_basic
    update_move_troops
    lune_front_update
   
  end

  #--------------------------------------------------------------------------
  # * Inicializaç&#227;o das variáveis
  #--------------------------------------------------------------------------
  def create_battlers
    @bitmap = Array.new(4) { Sprite_Battler.new(@viewport1) }
    @cw = []
    @ch = []
    @pattern = []
    @index = []
  for actor in $game_party.members
    draw_battler(actor.character_name, actor.character_index, 100 + actor.index*110, actor.index)
  end
end
  #--------------------------------------------------------------------------
  # * Criaç&#227;o dos gráficos dos personagens
  #--------------------------------------------------------------------------
   def draw_battler(character_name, index, x, y)
    return unless character_name
    @bitmap[y].bitmap = Cache.character(character_name)
    @bitmap[y].x = $game_party.members[y].screen_x = x
    @bitmap[y].y = $game_party.members[y].screen_y = 250
    $game_party.members[y].screen_x += 16
    $game_party.members[y].screen_y += 24
    @bitmap[y].z = 0
    @pattern[y] = 0
    @index[y] = index
    sign = character_name[/^[\!\$]./]
    if sign && sign.include?('$')
      @cw[y] = @bitmap[y].width / 3
      @ch[y] = @bitmap[y].height / 4
    else
      @cw[y] = @bitmap[y].width / 12
      @ch[y] = @bitmap[y].height / 8
    end
    sx = (@index[y] % 4 * 3) * @cw[y]
    sy = (@index[y] / 4 * 4 + 6 / 2) * @ch[y]
    @bitmap[y].src_rect.set(sx + @cw[y], sy, @cw[y], @ch[y])
  end
  #--------------------------------------------------------------------------
  # * Movimento dos gráficos dos personagens
  #--------------------------------------------------------------------------
  def move_actors_front(y, target = nil)
    return unless y
    unless target
      @bitmap[y].y -= 2 if @bitmap[y].y >= 220
      @pattern[y] = (@bitmap[y].y % 24) / 8
      sx = (@index[y] % 4 * 3 + @pattern[y]) * @cw[y]
      sy = (@index[y] / 4 * 4 + 6 / 2) * @ch[y]
      @bitmap[y].src_rect.set(sx, sy, @cw[y], @ch[y])
    else
      @distance_in_y = @bitmap[y].y - (@target.screen_y - 50)
      @distance_in_x = @bitmap[y].x - (@target.screen_x)
      if @bitmap[y].y >= @distance_in_y
      @bitmap[y].y -= @distance_in_y / 20
      @bitmap[y].x -= @distance_in_x / 18
      end
      @pattern[y] = (@bitmap[y].y % 24) / 8
      sx = (@index[y] % 4 * 3 + @pattern[y]) * @cw[y]
      sy = (@index[y] / 4 * 4 + 6 / 2) * @ch[y]
      @bitmap[y].src_rect.set(sx, sy, @cw[y], @ch[y])
    end
   
  end
  def move_actors_back(n)
    for y in 0...$game_party.members.size
      unless y == n
        @bitmap[y].y += 2 if @bitmap[y].y <= 248
        @distance_in_x = @bitmap[y].x - (100 + $game_party.members[y].index*110)
        @bitmap[y].x -= @distance_in_x / 15
      end
        character_name = $game_party.members[y].character_name
    if $game_party.members[y].dead?
      @index[y] = 0
      @bitmap[y].bitmap = Cache.character(Lune_Frontal_Battle::DeadG[$game_party.members[y].id]) if @bitmap[y].bitmap != Cache.character(Lune_Frontal_Battle::DeadG[$game_party.members[y].id])
    else
      @index[y] = $game_party.members[y].character_index
      @bitmap[y].bitmap = Cache.character(character_name) if @bitmap[y].bitmap != Cache.character(character_name)
    end
    @pattern[y] = (@bitmap[y].y % 24) / 8
    sx = (@index[y] % 4 * 3 + @pattern[y]) * @cw[y]
    sy = (@index[y] / 4 * 4 + 6 / 2) * @ch[y]
    @bitmap[y].src_rect.set(sx, sy, @cw[y], @ch[y])
    @bitmap[y].opacity += 4 unless @bitmap[y].opacity >= 255
    end
  end
  #--------------------------------------------------------------------------
  # * Atualizaç&#227;o dos movimentos dos personagens
  #--------------------------------------------------------------------------
  def update_move_troops
    @startmove = nil if @party_command_window.active
    pattern = 0
    move_actors_front(@startmove, @target)
    move_actors_back(@startmove)   
  end
  #--------------------------------------------------------------------------
  # * atualizaç&#227;o do indice.
  #--------------------------------------------------------------------------
  def start_actor_command_selection
    @startmove = BattleManager.actor.index
    lune_front_start_actor_command
  end
  def dispose_spriteset
    lune_front_dispose
    for y in 0...$game_party.members.size
    @bitmap[y].dispose
    end
  end
 
  #--------------------------------------------------------------------------
  # * atualizaç&#227;o do indice no processamento.
  #--------------------------------------------------------------------------

  def process_action
    return if scene_changing?
    if !@subject || !@subject.current_action
      @subject = BattleManager.next_subject
      if @subject
      @subject.actor? ? @startmove = @subject.index : @startmove = nil
      end
    end
    return turn_end unless @subject
    if @subject.current_action
      @subject.current_action.prepare
      if @subject.current_action.valid?
        @status_window.open
        execute_action
      end
      @subject.remove_current_action
    end   
    process_action_end unless @subject.current_action
  end
 
  #--------------------------------------------------------------------------
  # * animaç&#245;es de ataque
  #--------------------------------------------------------------------------
 
  def show_attack_animation(targets)
    if @subject.actor?
      show_normal_animation(targets, @subject.atk_animation_id1, false)
      show_normal_animation(targets, @subject.atk_animation_id2, true)
    else
      show_monster_animation(targets, @subject.atk_animation_id1, false)
      abs_wait_short
    end
  end
  #--------------------------------------------------------------------------
  # * Exibiç&#227;o da animaç&#227;o normal
  #     targets      : lista dos alvos
  #     animation_id : ID da animaç&#227;o
  #     mirror       : invers&#227;o
  #--------------------------------------------------------------------------
  def show_monster_animation(targets, animation_id, mirror = false)
    animation_id = 1 if animation_id.nil?
      animation = $data_animations[animation_id]
    if animation
      targets.each do |target|
        @bitmap[target.index].opacity = 0
        target.animation_id = animation_id
        target.animation_mirror = mirror
        abs_wait_short unless animation.to_screen?
      end
      abs_wait_short if animation.to_screen?
    end
  end
    def show_normal_animation(targets, animation_id, mirror = false)
    animation = $data_animations[animation_id]
    if animation
      onecast = true
      targets.each do |target|
        @target = target unless from_distance?
        if !Lune_Frontal_Battle::Nocast.include?(@subject.current_action.item.id) and onecast
          abs_wait(Lune_Frontal_Battle::Casttime)
          @subject.animation_id = Lune_Frontal_Battle::Castid
          onecast = false
          abs_wait(30)
        end
        @bitmap[target.index].opacity = 0 if target.actor?
        target.animation_id = animation_id
        target.animation_mirror = mirror
        abs_wait_short unless animation.to_screen?
      end
      abs_wait_short if animation.to_screen?
    end
    @target = nil
  end
  #--------------------------------------------------------------------------
  # * verificaç&#227;o de ataque a distancia
  #--------------------------------------------------------------------------
  def from_distance?
    return true unless @subject.actor?
    return true if !Lune_Frontal_Battle::Dist.include?(@subject.current_action.item.id) and @subject.current_action.item.id != 1
    return true if Lune_Frontal_Battle::Weapdist.include?(@subject.weapon_type)
    return false
  end
end


#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  Esta classe gerencia os heróis. Ela é utilizada internamente pela classe
# Game_Actors ($game_actors). A instância desta classe é referenciada
# pela classe Game_Party ($game_party).
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Aliasing
  #--------------------------------------------------------------------------
alias lune_frontal_initialize initialize
  #--------------------------------------------------------------------------
  # * Variáveis públicas
  #--------------------------------------------------------------------------
  attr_accessor   :screen_x               # posiç&#227;o x na tela do battler
  attr_accessor   :screen_y               # posiç&#227;o y na tela do battler
  attr_accessor   :screen_z               # posiç&#227;o z na tela do battler
  #--------------------------------------------------------------------------
  # * Inicializaç&#227;o do objeto
  #     actor_id : ID do herói
  #--------------------------------------------------------------------------
  def initialize(actor_id)
    lune_frontal_initialize(actor_id)
    @screen_x = 0
    @screen_y = 0
    @screen_z = 0
  end
  def weapon_type
    weapons.any? {|weapon| return weapon.wtype_id }
  end
  def use_sprite?
    return true
  end
end

class Game_Enemy < Game_Battler
  def atk_animation_id1
  end
end


Screeny:
Spoiler:



Dodatkowe informacje:
Instrukcja:
1.Wklej skrypt nad 'Main' w edytorze skryptów.
Skrypt nie potrzebuje żadnych dodatkowych grafik!
________________________
Praca uszlachetnia, lenistwo uszczęśliwia.
 
 
Abercjusz 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 30 Paź 2011
Posty: 89
Skąd: Aeitlan
Wysłany: Czw 20 Wrz, 2012 18:37
Skrypt jest bardzo fajny. Mam jedno pytanie:
Czy ten skrypt działa z Animated Battlers?
________________________
~Aktualne Projekty Wiecznoproblemoultimowicza;)~
Telheranei
:elf: :paladyn: :ork:
 
 
Saskio 




Preferowany:
RPG Maker VXAce

Pomógł: 1 raz
Dołączył: 20 Sie 2012
Posty: 51
Skąd: Włocławek
Wysłany: Sob 22 Wrz, 2012 21:17
Wydaje mi się, że można by przerobić skrypt na animowane battlersy, ale z tego co wiem to te animacje są widoczne "od boku" :D
________________________
Praca uszlachetnia, lenistwo uszczęśliwia.
 
 
Abercjusz 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 30 Paź 2011
Posty: 89
Skąd: Aeitlan
Wysłany: Nie 23 Wrz, 2012 16:55
Aha, dzięki.
________________________
~Aktualne Projekty Wiecznoproblemoultimowicza;)~
Telheranei
:elf: :paladyn: :ork:
 
 
asdasd 



Dołączył: 13 Lis 2012
Posty: 3
Wysłany: Sro 14 Lis, 2012 16:04
Dziekuje Bardzo, musze powiedziec, ze tego uzyje :D
 
 
Kubek121 



Dołączył: 31 Gru 2012
Posty: 1
Wysłany: Sro 02 Sty, 2013 10:20
Czy jest coś takiego na VX
 
 
ka0909 



Preferowany:
RPG Maker XP

Pomógł: 20 razy
Dołączył: 02 Paź 2010
Posty: 122
Wysłany: Sro 02 Sty, 2013 15:41
Kubek
Tak jest tylko trzeba poszukać na tych angielskich stronach ;)
________________________
ka0909 <--- Tajemnicze kanumerki
Pomagam w skryptach XP,VX i VX ace.
Napisz priv jeśli potrzebujesz pomocy ;)
 
 
propaladinek 



Dołączył: 27 Gru 2012
Posty: 1
Wysłany: Czw 03 Sty, 2013 09:25
Możecie podać link do tego systemu do vx jak jest?
 
 
Rubicante 




Preferowany:
RPG Maker VX

Ranga RM:
2 gry

Pomógł: 2 razy
Dołączył: 21 Paź 2010
Posty: 63
Wysłany: Wto 15 Sty, 2013 19:10
Mam problem ze skryptem, a mianowicie po śmierci bohatera wyskakuje mi takie okienko z błędem:

Wie ktoś o co chodzi?
________________________
Umieszczam link do oficjalnego Bloga Zwiczych Opowieści: http://zwiodimus.webnode.com/
Ściągnij wszystkie wydane przezemnie gry. Zwicza paczka, zawiera wszystkie gry z serii Zwicze Opowieści i nie tylko: https://docs.google.com/open?id=0B4N6KsFzHdTlLVB3QlUybDV5RTQ (Waga 330 mb)
 
 
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