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 skrypt sideview
Autor Wiadomość
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
Wysłany: Pią 23 Mar, 2012 23:55
Prosty skrypt sideview
~ Simple Sideview Battle System ~


Krótki opis:
Najprostszy chyba skrypt na walkę widzianą z boku. Nie wymaga żadnych dodatkowych grafik, jest kompatybilny chyba ze wszystkimi innymi modyfikacjami walki, typu paski, pop-upy, zmiana menu, etc.

Autor:
Autor skryptu: Jet10985 (Jet)
Tłumaczenie: Angius

Kompatybilność:
RPG Maker VX Ace

Skrypt:
Spoiler:

Kod:
#===============================================================================
# Side-View Battle System
# By Jet10985 (Jet)
#===============================================================================
# This script will allow you to have battle where all the actor's sprites are
# display on the right side of the screen.
# This script has: 10 customization options.
#===============================================================================
# Nadpisane metody:
# Scene_Battle: show_attack_animation
# Spriteset_Battle: update_actors
#-------------------------------------------------------------------------------
# Zaaliasowane metody:
# Spriteset_Battle: create_actors, create_enemies
# Sprite_Character: initialize, update, dispose, start_new_effect
# Scene_Battle: use_item, next_command, prior_command
# Game_Character: screen_x, screen_y
#===============================================================================

module Jet
  module Sideview
   
    #===========================================================================
    # OPCJE PRZECIWNIKÓW
    #===========================================================================
   
    # To są animacje podstawowych ataków przeciwników.
    # Według wzoru: id_przeciwnika => id_animacji,
    ENEMY_ATK_ANIMS = {
   
    1 => 4,
    6 => 2,
    5 => 27
   
    }
   
    # To ID animacji będącej animacją ataku przeciwnika, gdy nie ma jej
    # przypisanej powyżej.
    ENEMY_ATK_ANIMS.default = 1
   
    # Lista ID przeciwników, których battlersy powinny być odbite w poziomie.
    FLIPPED_ENEMIES = [2, 3, 4, 5, 8, 10, 12, 13, 14, 16, 17, 18, 19]
   
    #===========================================================================
    # OPCJE BOHATERA
    #===========================================================================
   
    # Czy bohater powinien mieć cień?
    PLAYER_SHADOW = true
   
    # Zmiana chara zależna od stanu bohatera.
    # Według wzoru: id_statusu => "charset"
    # Co oznacza, że gdy bohater otrzyma określony status, skrypt poszuka grafiki
    # o tej samej co charset nazwie, plus odpowiednim sufiksie
    # NP: Nazwa charsetu Ralpha to $Ralph. Ralph ginie. To oznacza, że
    # otrzymał status o ID=1, a poniższa konfiguracja dla 1 to: 1 => "_dead"
    # Teraz jego wygląd zmieni się na grafikę $ralph_dead. Jeśli takowa nie
    # istnieje, nie będzie żadnej zmiany.
   
    # Sufiksy
    STATE_SPRITES = {
   
    1 => "_dead",
    2 => "_poison",
    3 => "_blind"
   
    }
   
    #===========================================================================
    # GŁÓWNE OPCJE
    #===========================================================================
   
    # Animacja użycia umiejętności
    SKILL_ANIMATION = 43
   
    # Animacja użycia przedmiotu.
    ITEM_ANIMATION = 43
   
    # Animacje nadania bohaterowi określonych statusów.
    # Według wzoru: id_statusu => id_animacji
    STATE_ANIMATIONS = {
   
    1 => 56,
    2 => 50,
    3 => 51
   
    }
   
    #===========================================================================
    # OPCJE POLA WALKI
    #===========================================================================
   
    # Miejsce rozpoczęcia szeregu drużyny. [x, y]. Wyższe x - bardziej w prawo
    # Wyższe y - bardziej w dół
    FIELD_POS = [400, 80]
   
    # Ile w dół i na prawo kolejny członek drużyny jest od poprzedniego.
    # [x, y]. Tak samo jak wyżej.
    FIELD_SPACING = [12, 50]
   
  end
end

#===============================================================================
# NIE EDYTUJ PONIŻEJ BLAH BLAH BLAH CO ROBISZ.
#===============================================================================

($imported ||= {})[:jet] ||= {}
$imported[:jet][:Sideview] = true

class Game_Character
 
  attr_accessor :step_anime
 
  %w[screen_x screen_y].each {|a|
    aStr = %Q{
      alias jet6372_#{a} #{a}
      def #{a}(*args, &block)
        $BTEST ? 0 : jet6372_#{a}(*args, &block)
      end
    }
    module_eval(aStr)
  }
end

class Game_Actor
 
  def animation_id=(t)
    self.battle_sprite.start_animation($data_animations[t]) rescue nil
  end
end

class Game_Battler
 
  def battle_sprite
    return nil unless SceneManager.scene_is?(Scene_Battle)
    SceneManager.scene.spriteset.battler_sprites.each {|a|
      return a if a.battler == self
    }
    return nil
  end
end

class Spriteset_Battle
 
  alias jet2847_create_enemies create_enemies
  def create_enemies(*args, &block)
    jet2847_create_enemies(*args, &block)
    @enemy_sprites.each {|a|
      a.mirror = Jet::Sideview::FLIPPED_ENEMIES.include?(a.battler.enemy.id)
    }
  end
 
  alias jet3835_create_actors create_actors
  def create_actors(*args, &block)
    jet3835_create_actors(*args, &block)
    @jet_party = $game_party.members
    @actor_sprites.each {|a|
      a.dispose
    }
    @actor_sprites = []
    $game_party.members.each {|a|
      f = Game_Character.new
      f.set_graphic(a.character_name, a.character_index)
      f.step_anime = true
      f.set_direction(4)
      n = Sprite_Character.new(@viewport1, f)
      n.jet_x = Jet::Sideview::FIELD_POS[0] + a.index * Jet::Sideview::FIELD_SPACING[0]
      n.jet_y = Jet::Sideview::FIELD_POS[1] + a.index * Jet::Sideview::FIELD_SPACING[1]
      n.battler = a
      n.battle_sprite = true
      if Jet::Sideview::PLAYER_SHADOW
        v = Sprite.new(nil)
        v.bitmap = Cache.system("Shadow")
        n.shadow_sprite = v
      end
      @actor_sprites.push(n)
    }
  end
 
  def update_actors
    if @jet_party != $game_party.members
      @actor_sprites.each {|a|
        a.dispose
      }
      @actor_sprites = []
      create_actors
    end
    @actor_sprites.each {|a| a.update }
  end
end

class Sprite_Character
 
  attr_accessor :battle_sprite, :jet_x, :jet_y, :shadow_sprite, :battler
 
  alias jet4646_initialize initialize
  def initialize(*args, &block)
    @battle_sprite = false
    jet4646_initialize(*args, &block)
  end
 
  alias jet3645_update update
  def update(*args, &block)
    jet3645_update(*args, &block)
    if @battle_sprite
      @character.step_anime = !@battler.dead?
      @character.update
      self.x = @jet_x
      self.y = @jet_y
      if !@battler.nil?
        f = @battler.states.dup
        f.sort! {|a, b|
          a.priority <=> b.priority
        }.reverse!
        for i in 0...f.size
          a = Jet::Sideview::STATE_SPRITES[f[i].id]
          next if a.nil?
          b = (Cache.character(@character.character_name + a) rescue false)
          next unless b
          index = @character.character_index
          @character.set_graphic(@character.character_name + a, index)
          break
        end
      end
      if !@shadow_sprite.nil?
        @shadow_sprite.x = self.x - @shadow_sprite.width / 2
        @shadow_sprite.y = self.y - 28
        @shadow_sprite.visible = self.visible
        @shadow_sprite.viewport = self.viewport
        @shadow_sprite.z = self.z - 1
      end
    end
  end
 
  alias jet5484_dispose dispose
  def dispose(*args, &block)
    @shadow_sprite.dispose if !@shadow_sprite.nil?
    jet5484_dispose(*args, &block)
  end
 
  def move_x(times, amount)
    i = 0
    until i == times
      self.jet_x += amount
      i += 1
      [Graphics, SceneManager.scene.spriteset].each {|a| a.update }
    end
  end
 
  def effect?
    false
  end
end

class Game_Enemy
 
  def atk_animation_id1
    return Jet::Sideview::ENEMY_ATK_ANIMS[@enemy_id]
  end
 
  def atk_animation_id2
    return 0
  end
end

class Scene_Battle
 
  attr_reader :spriteset
 
  alias jet2711_use_item use_item
  def use_item(*args, &block)
    if @subject.is_a?(Game_Actor)
      if !@subject.current_action.guard?
        @subject.battle_sprite.move_x(11, -6)
      end
    end
    if !@subject.current_action.guard? && !@subject.current_action.attack?
      if @subject.current_action.item.is_a?(RPG::Item)
        n = $data_animations[Jet::Sideview::ITEM_ANIMATION]
      else
        n = $data_animations[Jet::Sideview::SKILL_ANIMATION]
      end
      @subject.battle_sprite.start_animation(n)
      wait_for_animation
    end
    jet2711_use_item(*args, &block)
    if @subject.is_a?(Game_Actor)
      if !@subject.current_action.guard?
        @subject.battle_sprite.move_x(11, 6)
      end
    end
  end
 
  def show_attack_animation(targets)
    aid1 = @subject.atk_animation_id1
    aid2 = @subject.atk_animation_id2
    show_normal_animation(targets, aid1, false)
    show_normal_animation(targets, aid2, true)
  end
 
  %w[next prior].each {|a|
    aStr = %Q{
      alias jet3734_#{a}_command #{a}_command
      def #{a}_command(*args, &block)
        f = BattleManager.actor
        f.battle_sprite.move_x(6, 6) if f.is_a?(Game_Actor)
        jet3734_#{a}_command(*args, &block)
        f = BattleManager.actor
        f.battle_sprite.move_x(6, -6) if f.is_a?(Game_Actor)
      end
    }
    module_eval(aStr)
  }
end

class Game_Action
 
  def guard?
    item == $data_skills[subject.guard_skill_id]
  end
end

if $imported[:jet][:BattlePopUps]
  class Sprite_Character
   
    attr_accessor :popups
       
    alias jet4758_initialize initialize
    def initialize(*args, &block)
      @popups = []
      @updating_sprites = []
      @popup_wait = 0
      jet4758_initialize(*args, &block)
    end
       
    alias jet7467_update update
    def update(*args, &block)
      jet7467_update(*args, &block)
      if @popup_wait == 0
        if !@popups.empty?
          @updating_sprites.push(@popups.pop)
          @popup_wait = 30
        end
      else
        @popup_wait -= 1
      end
      @updating_sprites.each {|a|
        a.visible = true if !a.visible
        a.update
        @updating_sprites.delete(a) if a.disposed?
      }
    end
   
    alias jet5483_dispose dispose
    def dispose(*args, &block)
      (@updating_sprites + @popups).each {|a| a.dispose }
      jet5483_dispose(*args, &block)
    end
   
    alias jet3745_setup_new_effect setup_new_effect
    def setup_new_effect(*args, &block)
      jet3745_setup_new_effect(*args, &block)
      do_sprite_popups
    end
   
    def make_popup(text, color)
      @popups.unshift(Sprite_JetPopup.new(text.to_s, color, self))
    end
   
    def do_sprite_popups
      return if @battler.nil?
      if @battler_struct.nil?
        @battler_struct = Struct.new(:hp, :mp, :tp).new(0, 0, 0)
        @battler_struct.hp = @battler.hp
        @battler_struct.mp = @battler.mp
        @battler_struct.tp = @battler.tp
      end
      check_success_popup
      check_hp_popup
      check_mp_popup
      check_tp_popup
    end
   
    def check_success_popup
      if @battler.result.success
        if @battler.result.critical
          make_popup(Jet::BattlePopUps::CRITICAL_TEXT, Jet::BattlePopUps::CRITICAL_COLOR)
        elsif @battler.result.missed
          make_popup(Jet::BattlePopUps::MISSED_TEXT, Jet::BattlePopUps::MISS_COLOR)
        elsif @battler.result.evaded
          make_popup(Jet::BattlePopUps::EVADED_TEXT, Jet::BattlePopUps::EVADE_COLOR)
        end
        @battler.result.clear_hit_flags
      end
    end
   
    def check_hp_popup
      if @battler_struct.hp != @battler.hp
        f = @battler_struct.hp - @battler.hp
        if f > 0
          make_popup(Jet::BattlePopUps::HURT_TEXT + f.to_s, Jet::BattlePopUps::HURT_COLOR)
        elsif f < 0
          make_popup(Jet::BattlePopUps::HEAL_TEXT + f.abs.to_s, Jet::BattlePopUps::HEAL_COLOR)
        end
        @battler_struct.hp = @battler.hp
      end
    end
   
    def check_mp_popup
      if @battler_struct.mp != @battler.mp
        f = @battler_struct.mp - @battler.mp
        if f > 0
          make_popup(Jet::BattlePopUps::HURT_TEXT_MP + f.to_s, Jet::BattlePopUps::HURT_COLOR_MP)
        elsif f < 0
          make_popup(Jet::BattlePopUps::HEAL_TEXT_MP + f.abs.to_s, Jet::BattlePopUps::HEAL_COLOR_MP)
        end
        @battler_struct.mp = @battler.mp
      end
    end
   
    def check_tp_popup
      if @battler_struct.tp != @battler.tp
        f = (@battler_struct.tp - @battler.tp).round
        if f > 0
          make_popup(Jet::BattlePopUps::HURT_TEXT_TP + f.to_s, Jet::BattlePopUps::HURT_COLOR_TP)
        elsif f < 0
          make_popup(Jet::BattlePopUps::HEAL_TEXT_TP + f.abs.to_s, Jet::BattlePopUps::HEAL_COLOR_TP)
        end
        @battler_struct.tp = @battler.tp
      end
    end
  end
end



Screen:
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."


 
 
Theron 




Preferowany:
RPG Maker VX

Dołączył: 21 Sie 2011
Posty: 37
Wysłany: Czw 12 Kwi, 2012 09:02
Dla Angiusa "Pomógł" i... miejsce w creditach o ile w końcu zrobię projekt :D
________________________
Pomyśl, o czym myślisz i przemyśl czy warto sobie zajmować tym czas
 
 
 
Valdali 




Preferowany:
RPG Maker VXAce

Ranga RM:
1 gra

Pomógł: 20 razy
Dołączył: 19 Mar 2010
Posty: 421
Skąd: Reykjavik
Wysłany: Sro 18 Kwi, 2012 15:46
oł maj gadlisz!
dlaczego ja to zobaczyłem dopiero TERAZ?
Oczywiście użyję :-D
________________________
Moje anime w RPG Makerze. Zapraszam!
ZOBACZ :!: :!: :!:
Spoiler:

Moimi Mistrzami i Wielkimi Nauczycielami są: Melvin i Angius!

Dziennik Krejzolów:
Ayene
Angius
Melvin
Yoroiookami
CrasheR
Finwe

Moi ziomale :D

 
 
 
 
Diablo 




Preferowany:
RPG Maker VX

Pomógł: 5 razy
Dołączył: 25 Lip 2010
Posty: 155
Wysłany: Sob 30 Cze, 2012 09:58
Co zrobić żeby potwory były z lewej strony a nie na środku?
________________________



 
 
PaKiTos 




Preferowany:
RPG Maker 2003

Ranga RM:
2 gry

Pomógł: 16 razy
Dołączył: 05 Lis 2009
Posty: 359
Skąd: spytaj innych
Wysłany: Sob 30 Cze, 2012 10:32
Zmień ich miejsce w grupie potworów -.-
________________________
po co to kopiujesz? ;d
Spoiler:

Fakty:
1.Widzisz mój podpis
2.Jesteś w internecie
3.Czytasz
4.Siedzisz przy komputerze
5.Jesteś na UltimaForum
6.Twój nick to Gość


kiedys tu bylo fajniej... coz gospoda rma forever
chwala tym ktorzy nadal robia w 2k
 
 
Diablo 




Preferowany:
RPG Maker VX

Pomógł: 5 razy
Dołączył: 25 Lip 2010
Posty: 155
Wysłany: Sob 30 Cze, 2012 11:15
AHA :) Thx
________________________



 
 
BloodEye 



Pomógł: 1 raz
Dołączył: 04 Sie 2011
Posty: 23
Wysłany: Sob 01 Wrz, 2012 14:57
Nie ma takiego skryptu , który pokazywałby przeciwników z tej samej perspektywy ?
Tak jak w vx oraz xp ? Bo to nie wygląda zbyt estetycznie , ponadto jak zrobić , aby przeciwnikiem był jakiś człowiek ? (grafika człowieka, o tych samych rozmiarach co bohater ;d )
 
 
Draconis 




Preferowany:
RPG Maker VXAce

Pomógł: 4 razy
Dołączył: 03 Cze 2012
Posty: 43
Wysłany: Pon 24 Wrz, 2012 17:00
BloodEye napisał/a:

Bo to nie wygląda zbyt estetycznie , ponadto jak zrobić , aby przeciwnikiem był jakiś człowiek ? (grafika człowieka, o tych samych rozmiarach co bohater ;d )


Najłatwiej dodać grafikę do battlerów z charseta.
Spoiler:





Pobierz te obrazki i daj do battlerów ;-)
________________________


 
 
Sketpl 




Preferowany:
RPG Maker VXAce

Dołączył: 07 Mar 2013
Posty: 7
Wysłany: Czw 21 Mar, 2013 03:30
Wszystko mi się podoba z wyjątkiem tego że nie ma animacji strzelania z łuku, bo po prostu podchodzisz i uderzasz jakby to był miecz. Ale i tak przyda mi się i przeżyje to że nie ma tej animacji xd.
 
 
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
Wysłany: Pon 01 Kwi, 2013 19:11
Wszystkim którzy pytają dlaczego nie ma tego, tamtego i jeszcze tego: spójrzcie na pierwsze słowo nazwy skryptu :-P
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."


 
 
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