Привет вем я делаю игру с полностью своей графикой и у меня возникла небольшая проблема
Одна из фишек это интерактивность мира и возможность строительства домов появление новых строений в городе и прочее.
Вобщем в некоторых случаях с ставлю здания событиями ,то есть вместо чарсетов в таких событиях картинки домов.
Но проблема в том что нельзя вставить в событие картинку с 1 кадром(
И при этом мне необходимо использовать еще и скрипт
#==============================================================================
# Extra Movement Frames v. 1.0
# Author: modern algebra (rmrk.net)
# Date: January 20, 2008
#
# Instructions:
# Insert this script above main in the database. To add a character with
# extra movement frames, simply rename the character graphic to something
# of the form:
# !$%[<number of movement frames>]<Regular name>
#
# Example: !$%[4]001-Fighter01
# That would make the graphic 001-Fighter01 be interpreted as having 4 frames
#
# ** 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
Так как чарсеты людей и существ у меня 12 кадровые и покачеству превосходят рагнарек онлайн.
И вроде б по скрипту можно поставить 1 или 4 кадр ,тоесть задать кол-во кадров в названии - например ! $% [<Количество кадров движения>] <Регулярное имя> или $% [4] 001-Fighter01 ,на на деле кадров всегда столько сколько я вписываю в скрипте и они общие тоесть задал я 4 кадра для объекта $% [4] 001-Fighter01 а на деле всеравно 12 по умолчанию у всех типов, тоесть параметр [4] ни на что не влияет.Пробовал сам переделать скрипт под себя но не вышло.
Вобщем суть в чем мне нужен либо мини скрипт на еще один тип чарсетов в 1 кот отображались бы целиком без кадров ,либо как то переделать этот скрипт чтоб можно было б настраивать в хотя бы 3-12 ка ,ну или как то типа $=[1] а !=[12].
Заранее тем кто хочет и может помочь спасибо ,а если не хотите или не можете просто не обращайте внимание.