PortyGames Generation


 
IndiceÍndiceGaleríaFAQMiembrosBuscarPacksRegistrarseDonacionesConectarse
¡Buenas Invitado, Juega a los videojuegos gratuitos creados por otros PortyGamers!
¡Buenas Invitado, Lee online y totalmente gratis nuestra revista sobre PortyGames!
¡Buenas Invitado, Busca el programa más adecuado para crear tus propios videojuegos!
¡Buenas Invitado, Lee y aprende de los tutoriales de PortyGamers más avanzados!
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Últimos temas
» PortyGames generation cumple 2 años
por Zangetsu Dom Nov 13, 2011 1:02 am

» sugerencia publicidad
por Zangetsu Dom Nov 13, 2011 1:01 am

» PortyGamees aplica soluciones para soportar su crisis...
por Zangetsu Dom Nov 13, 2011 12:59 am

» Baja de ranking
por exellomas Dom Oct 23, 2011 8:06 pm

» wizard101 music xd
por Zangetsu Jue Sep 22, 2011 1:43 pm

» 6 curiosidades sobre la vida de Steve Jobs
por Zangetsu Jue Sep 15, 2011 7:35 pm

» Taller De Charsets Rpg maker 2000/2003
por HollowMaker Jue Ago 25, 2011 1:16 pm

» un pixelart
por Pokaranero Miér Jul 27, 2011 5:14 pm

» Almohadazo
por exellomas Mar Jul 26, 2011 1:07 am

» EmuPack
por Emmet Dom Jul 10, 2011 3:45 pm


CaosG Asistencia ForoActivo Foros Metal Slug FC Anime Supremo No Fansub Good Area




Comparte | 
 

 Bestiario

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Zangetsu
Moderador
Moderador


Especialidad : Mapeador

Masculino

Sagitario Serpiente
Mensajes : 461
Monedas : 1036
Reputación : 6
Edad : 27

MensajeTema: Bestiario   Jue Nov 25, 2010 8:29 pm

Nombre: Bestiario para RPG Maker VX
Autor: Krazplay
Versión: 1.0
Instrucciones: Pegar sobre main. Lo demás viene en el Script.

Código:
#==============================================================================
# ■ Bestiario para RPG Maker VX
#------------------------------------------------------------------------------
# Versión 1.0 (15/02/2008) por Krazplay
# Última versión, comentarios:
# http://rpgmakerxp-factory.net/forum/index.php?topic=12494
#------------------------------------------------------------------------------
# Este script está configurado para funcionar en 640x480. Puedes encontrar el
# script para pasar a 640x480 aquí (no es necesario registrarse):
# http://rpgmakerxp-factory.net/forum/index.php?topic=12460
# Funciona en otras resoluciones, pero faltaría reconfigurarlo
# (ver las constantes a modificar más abajo) para que los textos no se pasen.
#------------------------------------------------------------------------------
# Este script utiliza las variables 4001 a 4000+nº de monstruos en la base de datos
# Eso puede modificarse fácilmente para usar otras variables que no interfieran
# en el juego.
# Para llamar al menú utiliza la línea siguiente:
# $scene = Scene_Liste_Monstres.new
# Al terminar, se vuelve al menú. Para volver al mapa en vez de al menú usa:
# $scene = Scene_Liste_Monstres.new(false)
#
# ¡No olvides echar un ojo a la configuración de abajo!
#------------------------------------------------------------------------------
# Puedes redistribuir libremente este script, y modificarlo.
# Pero deber dejar la procedencia (autor/sitio) del script original, que está
# en la parte superior..
#==============================================================================
module KRAZ_SLM
 # Si es true, los monstruos quo no han sido derrotados no aparecen en
 # la lista de ninguna manera.
 MONSTRES_INCONNUS_INVISIBLES = false
 # Si es true, los nombres de los monstruos son visibles.
 # Si es falso, aparecen con el nombre de NOM_MONSTRE_INCONNU
 NOMS_PAR_DEFAUT = false
 # Si los monstruos desconocidos son visibles pero no aparece su nombre,
 # esto será lo que aparezca en su lugar.
 NOM_MONSTRE_INCONNU = "Desconocido"
 # Si true, se puede acceder a los detalles de un monstruo sin
 # haberlo derrotado aún.
 DETAILS_PAR_DEFAUT = false
 # Si la escena se llama desde el menú, puede estar bien devolver el cursor
 # al comando Bestiario.
 POSITION_DS_MENU = 0
 # Define las variables que vas a utilizar.
 # No olvides que comienza en DEPART_VARIABLES+1, porque el primer
 # monstruo tieneID 1, no 0.
 DEPART_VARIABLES = 4000
 # Los métodos siguientes son referencias a las variables que son
 # usadas por el nombre del enemigo, así que si quieres
 # utilizarlas en el juego, el problema vendrá aquí.
 def self.nombre_tués(id_monstre)
  return $game_variables[DEPART_VARIABLES+id_monstre]
 end
 
 def self.set_nombre_tués(id_monstre, nombre)
  $game_variables[DEPART_VARIABLES+id_monstre] = nombre
 end
 
 def self.ajout_nombre_tués(id_monstre, nombre)
  $game_variables[DEPART_VARIABLES+id_monstre] += nombre
 end
 
 # Esto permite situar casi todos los textos presentes en el script
 # para que puedas personalizarlo todo en tu propia resolución
 #======> Posición de los elementos <======#
 # Para 640x480
 #-------------------------------------------#
 # La ventana general ocupa automáticamente toda la pantalla
 # Tamaño
 FG_TP = 24
 # Descripción de las 2 columnas
 FG_COL1 = "Nombre:"
 FG_COL2 = "Derrotados:"
 # Posición de las descripciones [x, y, largo, alto]
 FG_PD1 = [10, 0, 200, 32]
 FG_PD2 = [410, 0, 200, 32]
 # Posición del numéro del monstruo seleccionado [x, y, largo, alto]
 FG_NM = [240, 420, 300, 32]
 
 # Ventana de la lista de monstruos [x, y, largo, alto]
 # Atención: Esta ventana no se ve, sólo se muestra su contenido.
 FM = [0, 46, 640, 360+32]
 # Nombre del monstruo [x, largo máximo]
 FM_NM = [20, 300]
 # Número de monstruos derrotados [x, largo]
 # Atención a la alineación del texto a la derecha, no a la izquierda.
 FM_NMT = [470, 30]
 
 # Ventana de detalles de un monstruo [x, y, largo, alto]
 FD = [0, 0, 640, 480]
 # Rapidez de abertura/cierre (255 es lo más rápido)
 FD_V = 24
 # Posición de la imagen del monstruo [x, y]
 FD_B = [215, 220]
 # Tamaño de la fuente del nombre del monstruo
 FD_TT = 29
 # Coulor del nombre del monstruo [Rojo, Verde, Azul, Opacidad]
 FD_CT = [255, 155, 155, 255]
 # Nombre del monstruo [x, y, largo, alto]
 # Atención: El nombre se centra sobre x
 FD_NM = [300, 0, 400, 32]
 # Tamaño de la fuente del resto de la ventana
 FD_TP = 24
 # Utiliza el color del sistema
 FD_COLOR_SYSTEM = true
 # Si no quieres usar el color del sistema
 # [Rojo, Verde, Azul, Opacidad]
 FD_CSA = [255, 155, 155, 255]
 # Para todo, el nombre de la característica y su valor se escribe en
 # el mismo rectángulo, pero el valor se alinea a la derecha del rectángulo.
 # Posición PV [x, y, largo, alto]
 FD_HP = [50, 30, 200, 32]      # Puntos de vida
 FD_MP = [50, 55, 200, 32]      # Puntos de magia
 FD_ATK = [400,  50, 200, 32]    # Ataque
 FD_DEF = [400,  80, 200, 32]    # Defensa
 FD_SPI = [400, 110, 200, 32]    # Inteligencia (Espíritu)
 FD_AGI = [400, 140, 200, 32]    # Agilidad
 FD_EXP  = [10, 335, 200, 32]    # Experiencia
 FD_GOLD = [10, 360, 200, 32]    # Dinero
 # Las palabras para la experiencia y los objetos que pueden ser soltados
 # por el enemigo.
 FD_MEXP  = "Exp."
 FD_MDROP = "Objetos"
 # Posición de la palabra FD_MDROP [x, y, largo, alto]
 FD_DROP = [10, 385, 200, 32]
 # Posición de los objetos soltados por el enemigo [x, y, largo, alto]
 FD_DR1 = [150, 385, 212, 32]
 FD_DR2 = [150, 410, 200, 32]
 # Gráfico de las defensas elementales [x, y, rayo]
 FD_GDE = [400, 270, 30]
 ##=====> Fin de las posiciones de elementos para 640x480 <=====##
end
#==============================================================================
# Graphic_Def_Elem
#==============================================================================
class Window_Base
FONT_SIZE          = 18
WORD_ELEMENT_GUARD = "Def. Elemental"
NUMBER_OF_ELEMENTS =    8
ELEMENT_ORDER      = [1,3,8,5,2,4,7,6]
GRAPH_SCALINE_COLOR        = Color.new(255, 255, 255, 128)
GRAPH_SCALINE_COLOR_SHADOW = Color.new(  0,  0,  0, 192)
GRAPH_LINE_COLOR          = Color.new(255, 255,  64, 255)
GRAPH_LINE_COLOR_MINUS    = Color.new( 64, 255, 255, 255)
GRAPH_LINE_COLOR_PLUS      = Color.new(255,  64,  64, 255)
end

#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
# Ajoute les monstres tués aux variables lorsqu'on gagne un combat ou fuit.
#==============================================================================
class Scene_Battle
 include KRAZ_SLM
 
 alias kraz_slm_process_victory process_victory
 def process_victory
  compte_les_morts
  kraz_slm_process_victory
 end
 
 alias kraz_slm_process_escape process_escape
 def process_escape
  compte_les_morts
  kraz_slm_process_escape
 end
 
 def compte_les_morts
  for enemy in $game_troop.members
    if enemy.dead?
      KRAZ_SLM.ajout_nombre_tués(enemy.enemy_id, 1)
    end
  end
 end
end

#==============================================================================
# ■ Scene_Liste_Monstres
#------------------------------------------------------------------------------
# La scène du bestiaire, tout simplement.
#==============================================================================
class Scene_Liste_Monstres
 include KRAZ_SLM
 
 def initialize(vient_du_menu = true)
  # Pour savoir si l'on retourne au menu ou sur la carte à la fin de la scene.
  @vient_du_menu = vient_du_menu
  # Sert à vérifier si l'index de la fenêtre monstres a changé.
  # -1 pour forcer la mise à jour dès le départ
  @monstres_index = -1
 end
 
 def main
  @general_window = Window_General.new
  @monstres_window = Window_Monstres.new
  @details_monstre_window = Window_Details_Monstre.new
  @general_window.set_max_monstres(@monstres_window.data.size)
  @details_monstre_window.openness = 0
  @details_monstre_window.active = false
  Graphics.transition
  loop do
    Graphics.update
    Input.update
    update
    if $scene != self
      break
    end
  end
  @general_window.dispose
  @monstres_window.dispose
 end
 
 def update
  # Mise à jour des fenêtre
  @general_window.update
  @monstres_window.update
  @details_monstre_window.update
  # On vérifie si le curseur a bougé
  if @monstres_window.index != @monstres_index
    @monstres_index = @monstres_window.index
    @general_window.affiche_numero(@monstres_index+1)
  end
  # Bouton de confirmation
  if Input.trigger?(Input::C)
    if @monstres_window.active and @monstres_window.data.size > 0
      id_monstre = @monstres_window.data[@monstres_window.index][2]
      if KRAZ_SLM.nombre_tués(id_monstre) > 0 or DETAILS_PAR_DEFAUT
        @details_monstre_window.refresh(id_monstre)
        @details_monstre_window.active = true
        @details_monstre_window.open
        @monstres_window.active = false
        Sound.play_decision
      else
        Sound.play_buzzer
      end
    end
  # Bouton d'annulation
  elsif Input.trigger?(Input::B)
    Sound.play_cancel
    if @monstres_window.active
      $scene = @vient_du_menu ? Scene_Menu.new(POSITION_DS_MENU) : Scene_Map.new
      Graphics.freeze
    elsif @details_monstre_window.active
      @details_monstre_window.active = false
      @details_monstre_window.close
      @monstres_window.active = true
    end
  end
  if @details_monstre_window.active
    # Passage d'un monstre à l'autre lorsqu'on regarde leurs détails
    if Input.repeat?(Input::RIGHT) or Input.repeat?(Input::DOWN)
      data = @monstres_window.data
      new_index = index = @monstres_window.index
      data.size.times do
        new_index +=1
        new_index = 0 if new_index >= data.size
        break if DETAILS_PAR_DEFAUT or data[new_index][1] > 0
      end
      if new_index != index
        @details_monstre_window.refresh(data[new_index][2])
        Sound.play_cursor
        @monstres_window.index = new_index
      end
    elsif Input.repeat?(Input::LEFT) or Input.repeat?(Input::UP)
      data = @monstres_window.data
      new_index = index = @monstres_window.index
      data.size.times do
        new_index -=1
        new_index = data.size-1 if new_index < 0
        break if DETAILS_PAR_DEFAUT or data[new_index][1] > 0
      end
      @details_monstre_window.refresh(data[new_index][2]) if new_index != index
      @monstres_window.index = new_index
      if new_index != index
        @details_monstre_window.refresh(data[new_index][2])
        Sound.play_cursor
        @monstres_window.index = new_index
      end
    end
  end
 end # update_command
end # class Scene_Liste_Monstres
#==============================================================================
# ■ Window_General
#------------------------------------------------------------------------------
# Fenêtre général
#==============================================================================
class Window_General < Window_Base
 include KRAZ_SLM
 
 def initialize
  super(0, 0, Graphics.width, Graphics.height)
  @max = 0
  refresh
 end
 
 def refresh
  self.contents.font.size = FG_TP
  self.contents.font.color = system_color
  self.contents.draw_text(FG_PD1[0], FG_PD1[1], FG_PD1[2], FG_PD1[3], FG_COL1)
  self.contents.draw_text(FG_PD2[0], FG_PD2[1], FG_PD2[2], FG_PD2[3], FG_COL2)
 end
 
 def affiche_numero(ind=1)
  # On efface une partie de la fenêtre (RGSS2!) avant d'écrire dessus
  self.contents.clear_rect(FG_NM[0], FG_NM[1], FG_NM[2], FG_NM[3])
  self.contents.draw_text(FG_NM[0], FG_NM[1], FG_NM[2], FG_NM[3], "Monstruo #{ind} / #{@max}")
 end
 
 def set_max_monstres(max)
  @max = max
 end
end
 
#==============================================================================
# ■ Window_Monstres
#------------------------------------------------------------------------------
# Fenêtre avec le nom de tout les ennemis tués et combien de fois ils ont été
# tués. Seul le texte de la fenêtre reste visible (l'opacité et l'opacité du
# fond est mise à zéro).
#==============================================================================
class Window_Monstres < Window_Selectable
 include KRAZ_SLM
 
 attr_reader  :data
 
 def initialize
  # Création de la fenêtre, on s'assure qu'elle au-dessus de la fenêtre 'General'
  super(FM[0], FM[1], FM[2], FM[3])
  # On ne veut voir que le texte, donc opacité et back_opacity à 0
  self.back_opacity = 0
  self.opacity = 0
  # Index à zéro lorsqu'on commence, une seule colonne
  self.index = 0
  @column_max = 1
  # @data est le tableau des données qui vont être affichées.
  # Ces éléments sont des tableaux [nom du monstre, nombre tué, id du monstre]
  @data = []
  # Remplissage de @data
  for monstre in $data_enemies
    next if monstre == nil
    id = monstre.id
    tués = KRAZ_SLM.nombre_tués(id)
    if tués == 0
      next if MONSTRES_INCONNUS_INVISIBLES
      nom = NOMS_PAR_DEFAUT ? monstre.name : NOM_MONSTRE_INCONNU
      @data.push([nom, tués, id])
    else
      nom = monstre.name
      @data.push([nom, tués, id])
    end
  end
  # Le nombre d'objets dans notre liste c'est évidement le nombre de monstre
  # qu'on va afficher
  @item_max = @data.size
  # Va mettre le bitmap à la bonne taille
  create_contents
  refresh
 end

 def refresh
  self.contents.clear
  for i in 0...@item_max
    draw_item(i)
  end
 end
 
 def draw_item(index)
  tab_monstre = @data[index]
  if tab_monstre != nil
    self.contents.draw_text( FM_NM[0], (WLH * index), FM_NM[1], WLH, tab_monstre[0])
    self.contents.draw_text(FM_NMT[0], (WLH * index),FM_NMT[1], WLH, tab_monstre[1].to_s, 2)
  end
 end
 
 def item_rect(index)
  rect = Rect.new(0, 0, 0, 0)
  rect.width = (contents.width + @spacing) / @column_max - @spacing
  rect.height = WLH
  rect.x = index % @column_max * (rect.width + @spacing)
  rect.y = index / @column_max * WLH
  return rect
 end
 
 def update
  super
  if @column_max == 1 and self.active
    if Input.repeat?(Input::RIGHT)
      cursor_pagedown
    end
    if Input.repeat?(Input::LEFT)
      cursor_pageup
    end
  end
 end
 
end #class Window_Monstres
#==============================================================================
# ■ Window_details_monstre
#------------------------------------------------------------------------------
# Permet de créer une fenêtre avec les détails d'un ennemi
#==============================================================================
class Window_Details_Monstre < Window_Base
 include KRAZ_SLM
 
 def initialize
  super(FD[0], FD[1], FD[2], FD[3])
  self.contents = Bitmap.new(width-32, height-32)
  self.back_opacity = 255
 end
 
 def update
  if @opening
    self.openness += FD_V
    @opening = false if self.openness == 255
  elsif @closing
    self.openness -= FD_V
    @closing = false if self.openness == 0
  end
 end
 
 def refresh(monstre_id)
  self.contents.clear
  draw_actor_battler($data_enemies[monstre_id], FD_B[0], FD_B[1])
  self.contents.font.size = FD_TT
  self.contents.font.color = Color.new(FD_CT[0], FD_CT[1], FD_CT[2], FD_CT[3])
  monster_name_width = contents.text_size($data_enemies[monstre_id].name).width
  self.contents.draw_text(FD_NM[0]-(monster_name_width/2), FD_NM[1], FD_NM[2], FD_NM[3], $data_enemies[monstre_id].name)
  self.contents.font.size = FD_TP
  if FD_COLOR_SYSTEM
    self.contents.font.color = system_color
  else
    self.contents.font.color = Color.new(FD_CSA[0], FD_CSA[1], FD_CSA[2], FD_CSA[3])
  end
  self.contents.draw_text(FD_HP[0], FD_HP[1], FD_HP[2], FD_HP[3], "#{Vocab.hp}:")
  self.contents.draw_text(FD_MP[0], FD_MP[1], FD_MP[2], FD_MP[3], "#{Vocab.mp}:")
  self.contents.draw_text(FD_ATK[0], FD_ATK[1], FD_ATK[2], FD_ATK[3], "#{Vocab.atk}:")
  self.contents.draw_text(FD_DEF[0], FD_DEF[1], FD_DEF[2], FD_DEF[3], "#{Vocab.def}:")
  self.contents.draw_text(FD_SPI[0], FD_SPI[1], FD_SPI[2], FD_SPI[3], "#{Vocab.spi}:")
  self.contents.draw_text(FD_AGI[0], FD_AGI[1], FD_AGI[2], FD_AGI[3], "#{Vocab.agi}:")
  self.contents.draw_text(FD_EXP[0], FD_EXP[1], FD_EXP[2], FD_EXP[3], FD_MEXP+":")
  self.contents.draw_text(FD_GOLD[0], FD_GOLD[1], FD_GOLD[2], FD_GOLD[3], "#{Vocab.gold}:")
  self.contents.draw_text(FD_DROP[0], FD_DROP[1], FD_DROP[2], FD_DROP[3], FD_MDROP+":")
  self.contents.font.color = normal_color
  self.contents.draw_text(FD_HP[0], FD_HP[1], FD_HP[2], FD_HP[3], $data_enemies[monstre_id].maxhp.to_s, 2)
  self.contents.draw_text(FD_MP[0], FD_MP[1], FD_MP[2], FD_MP[3], $data_enemies[monstre_id].maxmp.to_s, 2)
  self.contents.draw_text(FD_ATK[0], FD_ATK[1], FD_ATK[2], FD_ATK[3], $data_enemies[monstre_id].atk.to_s, 2)
  self.contents.draw_text(FD_DEF[0], FD_DEF[1], FD_DEF[2], FD_DEF[3], $data_enemies[monstre_id].def.to_s, 2)
  self.contents.draw_text(FD_SPI[0], FD_SPI[1], FD_SPI[2], FD_SPI[3], $data_enemies[monstre_id].spi.to_s, 2)
  self.contents.draw_text(FD_AGI[0], FD_AGI[1], FD_AGI[2], FD_AGI[3], $data_enemies[monstre_id].agi.to_s, 2)
 
  self.contents.draw_text(FD_EXP[0], FD_EXP[1], FD_EXP[2], FD_EXP[3], $data_enemies[monstre_id].exp.to_s, 2)
  self.contents.draw_text(FD_GOLD[0], FD_GOLD[1], FD_GOLD[2], FD_GOLD[3], $data_enemies[monstre_id].gold.to_s, 2)
  # Affichage objets que peuvent donner les ennemis
  if $data_enemies[monstre_id].drop_item1.kind != 0
    item = $data_enemies[monstre_id].drop_item1
    case item.kind
    when 1
      icon_index = $data_items[item.item_id].icon_index
      name = $data_items[item.item_id].name
    when 2
      icon_index = $data_weapons[item.weapon_id].icon_index
      name = $data_weapons[item.item_id].name
    when 3
      icon_index = $data_armors[item.armor_id].icon_index
      name = $data_armors[item.item_id].name
    end
    opacity = self.contents.font.color == normal_color ? 255 : 128
    denom = $data_enemies[monstre_id].drop_item1.denominator.to_s
 
    draw_icon(icon_index, FD_DR1[0], FD_DR1[1]+4)
    self.contents.draw_text(FD_DR1[0]+30, FD_DR1[1], FD_DR1[2], FD_DR1[3], name + " (1/#{denom})", 0)
  end
  if $data_enemies[monstre_id].drop_item2.kind != 0
    item = $data_enemies[monstre_id].drop_item2
    case item.kind
    when 1
      icon_index = $data_items[item.item_id].icon_index
      name = $data_items[item.item_id].name
    when 2
      icon_index = $data_weapons[item.weapon_id].icon_index
      name = $data_weapons[item.item_id].name
    when 3
      icon_index = $data_armors[item.armor_id].icon_index
      name = $data_armors[item.item_id].name
    end
    opacity = self.contents.font.color == normal_color ? 255 : 128
    denom = $data_enemies[monstre_id].drop_item2.denominator
    draw_icon(icon_index, FD_DR2[0], FD_DR2[1]+4)
    self.contents.draw_text(FD_DR2[0]+30, FD_DR2[1], FD_DR2[2], FD_DR2[3], name + " (1/#{denom})", 0)
  end
  self.draw_enemy_element_radar_graph($data_enemies[monstre_id], FD_GDE[0], FD_GDE[1], FD_GDE[2])
 end
end

#--------------------------------------------------------------------------
# ● draw_actor_battler
#  Dessine le battler de l'acteur aux coordonnées x,y
#  L'acteur peut aussi bien être un monstre qu'un personnage
#--------------------------------------------------------------------------
class Window_Base
 def draw_actor_battler(actor, x, y)
  bitmap = Cache.battler(actor.battler_name, actor.battler_hue)
  cw = bitmap.width
  ch = bitmap.height
  src_rect = Rect.new(0, 0, cw, ch)
  self.contents.blt(x - cw / 2, y - ch / 2, bitmap, src_rect)
 end
end
#==============================================================================
# ¡ Window_Status
#==============================================================================
class Window_Base
#--------------------------------------------------------------------------
def draw_enemy_element_radar_graph(enemy, x, y, radius = 56)
  cx = x + radius + FONT_SIZE + 48
  cy = y + radius + FONT_SIZE + 32
  self.contents.font.color = system_color
  #self.contents.draw_text(x, y, 134, 32, WORD_ELEMENT_GUARD)
  for loop_i in 0..NUMBER_OF_ELEMENTS
    if loop_i == 0
 
    else
      @pre_x  = @now_x
      @pre_y  = @now_y
      @pre_ex = @now_ex
      @pre_ey = @now_ey
      @color1 = @color2
    end
    if loop_i == NUMBER_OF_ELEMENTS
      eo = ELEMENT_ORDER[0]
    else
      eo = ELEMENT_ORDER[loop_i]
    end
    er = element_pourcent(enemy, eo)
    estr = $data_system.elements[eo]
    @color2 = er < 0 ? GRAPH_LINE_COLOR_MINUS : er > 100 ? GRAPH_LINE_COLOR_PLUS : GRAPH_LINE_COLOR
    th = Math::PI * (0.5 - 2.0 * loop_i / NUMBER_OF_ELEMENTS)
    @now_x  = cx + (radius * Math.cos(th)).floor
    @now_y  = cy - (radius * Math.sin(th)).floor
    @now_wx = cx + ((radius+FONT_SIZE*2/2) * Math.cos(th)).floor - FONT_SIZE
    @now_wy = cy - ((radius+FONT_SIZE*1/2) * Math.sin(th)).floor - FONT_SIZE/2
    @now_vx = cx + ((radius+FONT_SIZE*6/2) * Math.cos(th)).floor - FONT_SIZE
    @now_vy = cy - ((radius+FONT_SIZE*3/2) * Math.sin(th)).floor - FONT_SIZE/2
    @now_ex = cx + (er.abs*radius/100 * Math.cos(th)).floor
    @now_ey = cy - (er.abs*radius/100 * Math.sin(th)).floor
    if loop_i == 0
      @pre_x  = @now_x
      @pre_y  = @now_y
      @pre_ex = @now_ex
      @pre_ey = @now_ey
      @color1 = @color2
    else
 
    end
    next if loop_i == 0
    self.contents.draw_line(cx+1,cy+1, @now_x+1,@now_y+1, GRAPH_SCALINE_COLOR_SHADOW)
    self.contents.draw_line(@pre_x+1,@pre_y+1, @now_x+1,@now_y+1, GRAPH_SCALINE_COLOR_SHADOW)
    self.contents.draw_line(cx,cy, @now_x,@now_y, GRAPH_SCALINE_COLOR)
    self.contents.draw_line(@pre_x,@pre_y, @now_x,@now_y, GRAPH_SCALINE_COLOR)
    self.contents.draw_line(@pre_ex,@pre_ey, @now_ex,@now_ey, @color1, 2, @color2)
    self.contents.font.size = FONT_SIZE
    self.contents.font.color = system_color
    self.contents.draw_text(@now_wx,@now_wy, FONT_SIZE*2, FONT_SIZE, estr, 1)
    self.contents.font.color = Color.new(255,255,255,128)
    self.contents.draw_text(@now_vx,@now_vy, FONT_SIZE*2, FONT_SIZE, er.to_s + "%", 2)
  end
end

 #--------------------------------------------------------------------------
 # ● 属性補正値の取得
 #    element_id : 属性 ID
 #--------------------------------------------------------------------------
 def element_pourcent(enemy, element_id)
  table = [0,200,150,100,50,0,-100]
  return table[enemy.element_ranks[element_id]]
 end
end
#==============================================================================
# ¸ ¦O�����C�u���¦
#==============================================================================
class Bitmap
def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
  distance = (start_x - end_x).abs + (start_y - end_y).abs
  if end_color == start_color
    for i in 1..distance
      x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
      y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
      if width == 1
        self.set_pixel(x, y, start_color)
      else
        self.fill_rect(x, y, width, width, start_color)
      end
    end
  else
    for i in 1..distance
      x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
      y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
      r = start_color.red  * (distance-i)/distance + end_color.red  * i/distance
      g = start_color.green * (distance-i)/distance + end_color.green * i/distance
      b = start_color.blue  * (distance-i)/distance + end_color.blue  * i/distance
      a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
      if width == 1
        self.set_pixel(x, y, Color.new(r, g, b, a))
      else
        self.fill_rect(x, y, width, width, Color.new(r, g, b, a))
      end
    end
  end
end
end



Última edición por Zangetsu el Jue Nov 25, 2010 9:49 pm, editado 1 vez
Volver arriba Ir abajo
http://zangetsu57.wordpress.com/
Orpheus
Copito de Nieve 2010
Copito de Nieve 2010
avatar

Especialidad : Jugador

Masculino

Tauro Perro
Mensajes : 278
Monedas : 396
Reputación : 9
Edad : 23
Localización : Nicaragua
Empleo /Ocio : Estudiante

MensajeTema: Re: Bestiario   Jue Nov 25, 2010 9:24 pm

muy bueno el script pero deberias de poner algunas screen para ver komo se ve el bestiario en el juego
Volver arriba Ir abajo
exellomas
Miembro Prestigioso
Miembro Prestigioso
avatar

Especialidad : Jugador

Masculino

Tauro Tigre
Mensajes : 638
Monedas : 1138
Reputación : 6
Edad : 19
Localización : En la casa de caperuzita verde
Empleo /Ocio : crear juegos rol o juegos de plataforma sin pago

MensajeTema: Re: Bestiario   Vie Nov 26, 2010 1:03 am

Gracias. tengo que usarlo en mi juego.. Ahora que lo pienso es coomo la pokedex xD
Volver arriba Ir abajo
http://ciudad-rpg-maker.foroactivo.com
Contenido patrocinado




MensajeTema: Re: Bestiario   

Volver arriba Ir abajo
 

Bestiario

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

Permisos de este foro:No puedes responder a temas en este foro.
PortyGames Generation :: Categoria de Ayuda y Tutoriales :: Sección de Scripting-