![]() |
|
RGSS-Scripts Postet hier die Scripts die ihr im Script-Editor selbst erstellt oder gefunden habt. Gefundene Scripts jedoch mit Quellenangabe posten! |
![]() |
|
Themen-Optionen |
![]() |
#1 |
Anfänger
![]() Registriert seit: 12.04.2005
Beiträge: 96
|
![]() 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 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. ![]() |
![]() |
![]() |
![]() |
#2 |
Neuling
![]() Registriert seit: 04.01.2007
Ort: Berlin
Alter: 24
Beiträge: 47
|
![]() 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 )´'´'´'´´ '´ ´' ´´ ' ´(> < )´'´'' ' ´´´' --------()()----------- / ´'´'´' ´' ´ ´'´´' \'´´'´' |
![]() |
![]() |
![]() |
#3 |
Anfänger
![]() Registriert seit: 27.02.2006
Beiträge: 77
|
![]() Endlich!!11
Gibt es die Anis auch irgendwo zum runterladen? |
![]() |
![]() |
![]() |
#4 |
Attentäter
![]() ![]() ![]() Registriert seit: 30.03.2006
Beiträge: 1.026
|
![]() 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.
__________________
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). |
![]() |
![]() |
![]() |
Lesezeichen |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
[Skizze] Character-Studien...;) | Immortus | Medien und Kunst | 8 | 25.04.2005 18:24 |