Kamikaze Board



Zurück   Kamikaze Board > RPG Maker > RPG Maker Ressourcen & Material > RGSS-Scripts

RGSS-Scripts Postet hier die Scripts die ihr im Script-Editor selbst erstellt oder gefunden habt. Gefundene Scripts jedoch mit Quellenangabe posten!

Antwort
 
Themen-Optionen
Alt 23.01.2007, 13:36   #1
Ascare
Anfänger
 
Benutzerbild von Ascare
 
Registriert seit: 12.04.2005
Beiträge: 96
Standard Variable Character Frames

Update!
Dank RAMart nun die V1.0!

Zuerst möchte ich klarstellen das nicht ich, sondern im Prinzip der Drake dieses Script gemacht hat. Ein paar Ideen und Veränderungen von KD, Phantom und mir sind ebenfalls mit drin und ich habe das Ganze als einzelnes Script zusammengetragen. RAMart hat zu entscheidenden Verbesserungen beigetragen.
Es gibt auch noch viele Fehler die im Zusammenhang mit Benutzung dieses Scripts auftauchen (Charas werden im Menü, bei Spielständen sowie im Editor nicht ordnungsgemäß angezeigt). Wer Lust hat diese Fehler auszubügeln, darf mich gerne kontaktieren.

Worum geht es eigentlich?
Normalerweise besteht ein XP Chara aus 4 Frames (2 Standposen, 2 Gehposen) sowie hier:

Durch das Script lässt ein Character auf mehr Frames erweitern, sowie dieser hier mit 8 Gehposen:

oder der hier mit 9 Gehposen:


Demo:
Als das Gerücht aufkam, das Charaktere mit mehr als 9 Frames nicht klappen würde, wollte ich es wissen und selbst ausprobieren. Nur sind Charaktere mit vielen Frames schwer zu finden, also habe ich mich an eine 3D Animation mit Tifa, bekannt aus FF7, gemacht. Herausgekommen sind 50 Laufframes + 1 Standframe. Achtung: Aufgrund der Größe des Charakters klappt die Demo möglicherweise bei einigen nicht. Testet selbst, Download hier.
Wer will kann auch mit der Frame Rate rumspielen (Event ganz unten links) und z.B. auf 10 oder 20 setzen, damit ihr seht wie flüssig die Bewegung ist.

Benutzung:
Die Anzahl der Gehposen ist variabel und wird im Dateinamen des Charakters bestimmt.
Einfach zum Dateinamen des Charakters ein f[x] einfügen. Wobei x für die Anzahl der Frames steht (inkl. Standpose).
Beispiele: Hero_f[8].png, Wachef[12]ani2.png, f[6]frau.png. Standard ist 4 und brauch nicht extra genannt zu werden (z.B. für RTP-Charas).

Um das Script zu verwenden: Script Editor öffnen, Rechtsklick auf Main, dann Insert wählen. Dort einen Namen eingeben (z.B. VCF) und im rechten Feld das Script einfach einfügen.

Code:
#============================================================================
# ** Variable Character Frames Script (v1.0)
#============================================================================
# Idee und Ausführung: Der Drake, KD, Phantom, Ascare, RAMart.
# Niemand verlangt ein extra Credit dafür, ihr könnt es einfach benutzen.
#
# Benutzung: Einfach zum Dateinamen des Charakters ein f[x] einfügen. 
# Wobei x für die Anzahl der Frames steht (inkl. Standpose).
#
# Beispiele: Hero_f[8].png, Wachef[12]ani2.png, f[6]frau.png
# Standard ist 4 und brauch nicht extra genannt zu werden (z.B. für RTP-Charas).
#============================================================================

class Game_Character
  #--------------------------------------------------------------------------
  # * Initialize
  #--------------------------------------------------------------------------
  alias_method :init, :initialize
  def initialize
    init
    getCharFrame
  end
  #--------------------------------------------------------------------------
  # * Get Character Frame
  #--------------------------------------------------------------------------
 def getCharFrame
  @CharFrame = 4
  self.character_name.sub(/f\[(\d+)\]/) { @CharFrame = $1.to_i }
  return @CharFrame
 end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Branch with jumping, moving, and stopping
    if jumping?
      update_jump
    elsif moving?
      update_move
    else
      update_stop
    end
    # If animation count exceeds maximum value
    # * Maximum value is move speed * 1 taken from basic value 18
    if @anime_count > 18 - @move_speed * 2
      # If stop animation is OFF when stopping
      if not @step_anime and @stop_count > 0
        # Return to original pattern
        @pattern = @original_pattern
        # If stop animation is ON when moving
      else
        # Update pattern
       if @CharFrame == 4
         @pattern = (@pattern + 1) % 4
        else
         @pattern = [((@pattern + 1) % @CharFrame), 1].max
       end
      end
      # Clear animation count
      @anime_count = 0
    end
    # If waiting
    if @wait_count > 0
      # Reduce wait count
      @wait_count -= 1
      return
    end
    # If move route is forced
    if @move_route_forcing
      # Custom move
      move_type_custom
      return
    end
    # When waiting for event execution or locked
    if @starting or lock?
      # Not moving by self
      return
    end
    # If stop count exceeds a certain value (computed from move frequency)
    if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
      # Branch by move type
      case @move_type
      when 1  # Random
        move_type_random
      when 2  # Approach
        move_type_toward_player
      when 3  # Custom
        move_type_custom
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update frame (move)
  #--------------------------------------------------------------------------
  def update_move
    # Convert map coordinates from map move speed into move distance
    distance = 2 ** @move_speed
    # If logical coordinates are further down than real coordinates
    if @y * 128 > @real_y
      # Move down
      @real_y = [@real_y + distance, @y * 128].min
    end
    # If logical coordinates are more to the left than real coordinates
    if @x * 128 < @real_x
      # Move left
      @real_x = [@real_x - distance, @x * 128].max
    end
    # If logical coordinates are more to the right than real coordinates
    if @x * 128 > @real_x
      # Move right
      @real_x = [@real_x + distance, @x * 128].min
    end
    # If logical coordinates are further up than real coordinates
    if @y * 128 < @real_y
      # Move up
      @real_y = [@real_y - distance, @y * 128].max
    end
    # If move animation is ON
    if @walk_anime
      # Increase animation count by 1.5
      @anime_count += 1.5*(@CharFrame/4)
    # If move animation is OFF, and stop animation is ON
    elsif @step_anime
      # Increase animation count by 1
      @anime_count += 1*(@CharFrame/4)
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (stop)
  #--------------------------------------------------------------------------
  def update_stop
    # If stop animation is ON
    if @step_anime
      # Increase animation count by 1
      @anime_count += 1*(@CharFrame/4)
    # If stop animation is OFF, but current pattern is different from original
    elsif @pattern != @original_pattern
      # Increase animation count by 1.5
      @anime_count += 1.5*(@CharFrame/4)
    end
    # When waiting for event execution, or not locked
    # * If lock deals with event execution coming to a halt
    unless @starting or lock?
      # Increase stop count by 1
      @stop_count += 1
    end
  end
end
  
class Sprite_Character < RPG::Sprite
  
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    # If tile ID, file name, or hue are different from current ones
    if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       @character_hue != @character.character_hue
      # Remember tile ID, file name, and hue
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      # If tile ID value is valid
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
          @tile_id, @character.character_hue)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      # If tile ID value is invalid
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        @CharFrame = @character.getCharFrame
        @cw = bitmap.width / @CharFrame
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
    # Set visible situation
    self.visible = (not @character.transparent)
    # If graphic is character
    if @tile_id == 0
      # Set rectangular transfer
      sx = @character.pattern * @cw
      sy = (@character.direction - 2) / 2 * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
    # Set sprite coordinates
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z(@ch)
    # Set opacity level, blend method, and bush depth
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    # Animation
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      animation(animation, true)
      @character.animation_id = 0
    end
  end
end
Funktionsweise:

Der grüne Bereich wird nur angezeigt wenn der Charakter stehen bleibt. Sobald er sich bewegt wird der rote Bereiche durchlaufen. In diesem Fall fängt er bei dem zweiten Frame an und läuft bis zum achten Frame, danach springt er wieder zurück auf den zweiten usw...

Nun, ich hoffe ihr könnt es so gut gebrauchen wie ich.
__________________
Ascare ist offline   Mit Zitat antworten
Alt 23.01.2007, 14:16   #2
Drago Männlich
Neuling
 
Benutzerbild von Drago
 
Registriert seit: 04.01.2007
Ort: Berlin
Alter: 24
Beiträge: 47
Standard

Es sieht echt hübsch aus ist es aber nicht sehr aufwendig die anis zu erstellen(zu basteln)???
__________________
Auch wenn du im Regen stehst darfst du nie aufhören weiter zu kampfen

´'´'´''´´´´'´'´'´' ´' ´' ´'
´' ´' ´' ´' ´' ´ '´' ' ´'´' ´'

´' ´' ' ´
(\__/)´'´´'' ´'´ '
´ ' ´' ' ´
(O.o )´'´'´'´´ '´
´' ´´ ' ´
(> < )´'´'' ' ´´´'
--------()()-----------
/ ´'´'´' ´' ´ ´'´´' \'´´'´'
Drago ist offline   Mit Zitat antworten
Alt 23.01.2007, 20:39   #3
shazam Männlich
Anfänger
 
Benutzerbild von shazam
 
Registriert seit: 27.02.2006
Beiträge: 77
Standard

Endlich!!11

Gibt es die Anis auch irgendwo zum runterladen?
__________________
shazam ist offline   Mit Zitat antworten
Alt 24.01.2007, 09:45   #4
Phantom Männlich
Attentäter
 
Benutzerbild von Phantom
 
Registriert seit: 30.03.2006
Beiträge: 1.026
Standard

Der Sache mit den Standposen ist auf meinem Mist gewachsen, und ein paar Charactersets die ich seinerzeit dafür gemacht hab findest du im Anhang.
Angehängte Dateien
Dateityp: rar Characters.rar (271,3 KB, 21x aufgerufen)
__________________
Zelda- Prince of Darkness

"Das ist nicht tot, was ewig liegt,
bis dass die Zeit den Tod besiegt!"

DOWNLOAD (Stand: 2.12.07)

Geändert von Phantom (24.01.2007 um 09:49 Uhr).
Phantom ist offline   Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Skizze] Character-Studien...;) Immortus Medien und Kunst 8 25.04.2005 18:24


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
RPGA.info