UltimaForum

Skrypty [VX] - Dodatkowe frame'y do obrazków.

CreeperCrisis - Pią 14 Maj, 2010 12:49
Temat postu: Dodatkowe frame'y do obrazków.
Dodatkowe frame'y do postaci


Opis:
Nie musisz teraz konwenterować obrazków z XP... :mrgreen:

Instrukcja:

Jest przetłumaczona w skrypcie...

Demo:

Niepotrzebne...

Screenshot:

Niepotrzebne...

Skrypt:

Spoiler:

Kod:
#==============================================================================
# EXTRA MOVEMENT FRAMES VERSION 1.0
# AUTOR: modern algebra (RMRK.NET)
# DATA: 20 STYCZEŃ 2008
# INSTRUKCJA:.
#   - Wstaw skrypt nad Main.
#   - Wstaw do Graphics\Chararacters obrazek z XP np. postać z czterema frame'ami.
#   - Nazwij obrazek tak: !$%[ilość frame'ów]Nazwa obrazka.png
#   - Wygląda to tak: !$%[4]001-Fighter01
#   - Wstawia się do [ilość frame'ów] liczbę frame'ów np. [4] lub [5] zależy od obrazka
#
#                                          DALEJ NIE EDYTOWAĆ!!!!!!!
#                                            NO CHYBA, ŻE BŁĄD......
#------------------------------------------------------------------------------
# ** Game_Character
#------------------------------------------------------------------------------
# Summary of changes:
# aliased methods - update_animation
# new class variables - height divisor, width divisor
# new methods - calculate_divisors
#==============================================================================

class Game_Character
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_reader :height_divisor    # The height of a single frame
 attr_reader :width_divisor     # number of frames in the x direction
 #--------------------------------------------------------------------------
 # * Calculate Divisors
 #--------------------------------------------------------------------------
 # Sets up the instance variables required
 #--------------------------------------------------------------------------
 def calculate_divisors
   return unless @previous_character.nil? || @previous_character != @character_name
   bitmap = Cache.character (@character_name)
   sign = @character_name[/^[\!\$].[\%]\[\d*\]/]
   if !sign.nil? && sign.size > 5
     @original_pattern = 0
     @width_divisor = sign[4, sign.size - 5].to_i
     @height_divisor = 4
   elsif !sign.nil? && sign.include? ('$')
     @width_divisor = 3
     @height_divisor = 4
   else
     @width_divisor = 12
     @height_divisor = 8
   end
   @previous_character = @character_name
 end
 #--------------------------------------------------------------------------
 # * Update Animation
 #--------------------------------------------------------------------------
 # Change the hard coded values to ones dependent on character graphic format
 #--------------------------------------------------------------------------
 alias ma_extra_movement_frames_anim_upd update_animation
 def update_animation
   saved_anime_count = @anime_count
   pattern_original = @pattern
   speed = @move_speed + (dash? ? 1 : 0)
   ma_extra_movement_frames_anim_upd
   if (saved_anime_count > (18 - speed * 2)) && (@step_anime || (@stop_count <= 0))
     @pattern = (pattern_original + 1) % @width_divisor
   end
 end
end

#==============================================================================
# * Sprite Character
#------------------------------------------------------------------------------
# Summary of changes:
# aliased methods - update_src_rect, update_bitmap
#==============================================================================

class Sprite_Character
 #--------------------------------------------------------------------------
 # * Update Src Rect
 #--------------------------------------------------------------------------
 # Interpret multiple movement frames: Changed pattern
 #--------------------------------------------------------------------------
 alias ma_extra_movement_frames_src_rect_upd update_src_rect
 def update_src_rect
   if @tile_id == 0
     ma_extra_movement_frames_src_rect_upd
     index = @character.character_index
     pattern = @character.pattern < @character.width_divisor ? @character.pattern : 1
     sx = (index % 4 * 3 + pattern) * @cw
     sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
     self.src_rect.set(sx, sy, @cw, @ch)
   end
 end
 #--------------------------------------------------------------------------
 # * Update Bitmap
 #--------------------------------------------------------------------------
 # Change hard coded values to ones dependent on character graphic
 #--------------------------------------------------------------------------
 alias ma_extra_movement_frames_bmp_upd update_bitmap
 def update_bitmap
   @character.calculate_divisors
   saved_tile_id = @tile_id
   saved_character_name = @character_name
   saved_character_index = @character_index
   ma_extra_movement_frames_bmp_upd
   if saved_tile_id != @character.tile_id or
     saved_character_name != @character.character_name or
     saved_character_index != @character.character_index
     unless @tile_id > 0
       @cw = bitmap.width / @character.width_divisor
       @ch = bitmap.height / @character.height_divisor
       self.ox = @cw / 2
       self.oy = @ch
     end
   end
 end
end

#==============================================================================
# ** Window Base
#------------------------------------------------------------------------------
# Summary of changes:
# overwritten methods - draw_character
#==============================================================================

class Window_Base
 #--------------------------------------------------------------------------
 # * Draw Charater (overwritten for extra movement frames)
 # character_name : the name of the character file
 # character_index : the index of the character in the file
 # x : the x position to draw
 # y : the y position to draw
 #--------------------------------------------------------------------------
 def draw_character(character_name, character_index, x, y)
   return if character_name == nil
   bitmap = Cache.character(character_name)
   sign = character_name[/^[\!\$].[\%]\[\d*\]/]
   if !sign.nil? && sign.size > 5
     cw = bitmap.width / sign[4, sign.size - 5].to_i
     ch = bitmap.height / 4
   elsif sign != nil and sign.include?('$')
     cw = bitmap.width / 3
     ch = bitmap.height / 4
   else
     cw = bitmap.width / 12
     ch = bitmap.height / 8
   end
   n = character_index
   src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
   self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
 end
end


To mój drugi skrypt. Pierwszy wygasł. :mrgreen:

Czeliosss - Pią 14 Maj, 2010 20:18

Twój czy czyiś? Patrząc w skrypcie znalazłem autora. Nie przywłaszczaj sobie cudzych skryptów, to jest plagiat.
Pzdr.

Kable - Pon 17 Maj, 2010 10:57

Czeliosss, Zapewne chodziło mu, że już dodał drugi skrypt na Forum ;p... tak by zmienił Autora tłumacząc to ;p
Amelanduil - Wto 18 Maj, 2010 16:36

sebek_minko napisał/a:
# AUTOR: modern algebra (RMRK.NET)


To MÓJ drugi skrypt. Pierwszy wygasł.

Nie przywłaszczamy cudzych skryptów!
+ Opisałbyś dokładniej działanie skryptu.

CreeperCrisis - Wto 18 Maj, 2010 20:17

No wiem, że to nie mój skrypt. Chciałem tymi słowami wytłumaczyć że to drugi skrypt, który ja wstawiłem na forum.

Powered by phpBB modified by Przemo © 2003 phpBB Group