O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

[RD12] Fome com Huds

Iniciado por RD12, 22/12/2012 às 13:02

Fome com Huds

Compativel com: Apenas RMVxAce
Facilidade de uso: Fácil
Lag gerado: Desprezível

[box class=titlebg]
Resumo
[/box]
    Um completo script para por Fome nos jogadores, e ainda vem com Huds.
Características:
Definir o tempo para a fome aumentar;
Definir o valor que a fome aumentará para cada Actor;
Criar itens que diminuam ou aumentam a fome;
Hud para todos os Personagens(Actors);
Hud simples e pequena para não poluir a tela;
Personagem morre quando a fome chega a 100.

[box class=titlebg]
Imagem
[/box]




[box class=titlebg]
Script
[/box]

#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#                             Script de Fome                        
#|Autor: RD12|          
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# A fome vai de 0 a 100, quanto maior o valor mais com fome o membro estará
# Se a fome chegar no 100 o membro irá fifcar com hp=0 (morre)
#
# Para um item diminuir a fome bote em sua Nota: -fome valor
# E para um item aumentar a fome, bote na nota: +fome valor

module Fome
  #Tempo em segundos que irá aumentar a fome
  Segundos = 5
  #Valor que irá aumentar de fome para cada personagem
  Actor = []#Declara a var
  Actor[0] = 9 #Primeiro personagem
  Actor[1] = 6 #Segundo
  Actor[2] = 4 #Terceiro
  Actor[3] = 11#Quarto
  #Actor[4] = 11#Quinto
  
  #Modifique a posição da Hud aqui
  HUDs_x = 1
  HUDs_y = 190
end

#===========================================================================================
#Hud da fome dos jogadores
class Hud_Fome < Sprite
  def initialize
    super
    self.bitmap = bitmap = Bitmap.new(100,300)
    self.bitmap.font.size = 14
    self.bitmap.font.name = "Segoe UI"
    self.x = Fome::HUDs_x
    self.y = Fome::HUDs_y
    refresh
  end
    
  def update
    super
    refresh
  end
  
  def refresh
    self.bitmap.clear
    for i in 0..$game_party.members.size-1
      @actor = $game_party.members
      base = Cache.picture("Fome_Base")
      rect = Rect.new(0,0,base.width,base.height)
      self.bitmap.blt(10,21+30*i,base,rect)
      self.bitmap.draw_text(10, 30*i, 100, 32, @actor[i].name, 0)
      if @actor[i].fome >= 100
         @actor[i].hp = 0
         hud_name = "Fome_100"
       else
         hud_name = "Fome_Hud"
      end 
      base = Cache.picture(hud_name)
      rect = Rect.new(0,0,base.width * @actor[i].fome / 100,base.height)
      self.bitmap.blt(10,21+30*i,base,rect)
     end  
  end
end 

#===========================================================================================
#Atualiza a Hud e Aumenta a fome de acordo com o tempo configurado
class Scene_Map
  alias rd12_main main
  def main
    $Fome = Hud_Fome.new
    @segundos = 0
    rd12_main
    $Fome.dispose
  end
  alias rd12_update update
  def update
    if Graphics.frame_count % 60 == 0
      @segundos += 1
    end
    if @segundos == Fome::Segundos
     for i in 0..$game_party.members.size-1
      $game_party.members[i].fome = (Fome::Actor[i])
     end  
    @segundos = 0
    end
    rd12_update
  end
end

#===========================================================================================
#Adiciona a fome nos personagens
class Game_Actor < Game_Battler
  alias rd12_initialize initialize
  def initialize(actor_id)
    @fome = 0
    rd12_initialize(actor_id)
  end
  
  def fome=(arg)
   @fome = 0 if @fome == nil
   @fome += arg
   @fome = 0 if @fome < 0
   $Fome.refresh
  end
  
  def fome
   @fome
  end
end

#===========================================================================================
#Modifica o método para poder usar o item de fome
class Game_Battler < Game_BattlerBase
  def item_test(user, item)
    return false if item.for_dead_friend? != dead?
    return true if $game_party.in_battle
    return true if item.for_opponent?
    return true if item.damage.recover? && item.damage.to_hp? && hp < mhp
    return true if item.damage.recover? && item.damage.to_mp? && mp < mmp
    return true if item_has_any_valid_effects?(user, item)
    arg = item.note.split
    return true if arg[0] == "-fome" or arg[0] == "+fome"
    return false
 end
end

#===========================================================================================
#Modifica o método para ganhar ou perder Fome
class Scene_Item < Scene_ItemBase
  def use_item_to_actors
    item_target_actors.each do |target|
      arg = item.note.split
      if arg[0] == "-fome"
        target.fome = -arg[1].to_i
        #Mostra mensagem com a fome atual
        msgbox("Fome diminuída em -#{arg[1]}\n","Fome atual: #{target.fome}/100")
      end
      if arg[0] == "+fome"
        target.fome = arg[1].to_i
        #Mostra mensagem com a fome atual
        msgbox("Fome aumentada em +#{arg[1]}\n","Fome atual: #{target.fome}/100")
      end
      item.repeats.times { target.item_apply(user, item) }
    end
  end 
end
#===========================================================================================


Imagens Necessárias:
Coloque-as na pasta Pictures do seu projeto
> http://i.imgur.com/Y9VWt.png
Nomeie para Fome_Base
> http://i.imgur.com/HOlyh.png
Nomeie para Fome_Hud
> http://i.imgur.com/5Wtfn.png
Nomeie para Fome_100

[box class=titlebg]
Créditos
[/box]
Script criado por Lucas RD12

Cara, ficou muito bom! Realmente era o que eu queria! O problema é que eu não uso menu nenhum, ou seja, sem itens! Não tem como, abaixar a fome por eventos?
Mesmo se não puder, +Ouro, por que ficou muito bom.
Venha conferir!

Tem sim:
$game_party.members[0].fome = -10
vai diminuir 10
é igual mesmo q poe.

Enfim um sistema de fome que consigo utilizar!! Parabéns cara!
Só uma dúvida... É possível utilizar um status quando a fome chegar a 0? Em vez de o personagem morrer?